- 博客(11)
- 收藏
- 关注
原创 android kotlin 协程源码分析withContext挂载和恢复
我们根据业务代码,子协程切换到io线程后,执行AnonymousClass1的resumeWith方法,根据代码片段3的内容,invokeSuspend子协程业务执行完毕后,会进行if判断,completion的类型,AnonymousClass1的成员completion为DispatchedCoroutine,所以直接执行completion.resumeWith。这边连接我们知道,我们的业务代码会生成一个匿名内部类,其父类继承SuspendLambda,反编译代码如下()
2024-02-19 15:00:11 1307
原创 协程源码解析准备之CoroutineContext简析
协程里面CoroutineContext是个很重要的概念,从描述看,类似一个集合,把关键元素都放入里面,根据key可以拿到不同类型的对象。和map的区别在于,map的value是相通类型,需要强制类型转换,而context根据key的类型返回不同类型的对象,不用强制类型转换。可以看到,这里有个特殊的存在,即ContinuationInterceptor 协程拦截器元素,始终放在CombinedContext的首位,结合CombinedContext的代码。既然是类似集合,需要提供访问、添加和删除的接口。
2024-02-17 15:29:18 169
原创 自定义简易的viewpager指示器
package com.example.dxy.myapplication.view;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graph...
2019-08-07 13:37:34 169
原创 SwitchCompact拦截点击事件
因为项目需要,点击的时候,根据相应的条件判断,如果条件成立,滑块滚动,否则不滚动。然后网上查了一圈,没有什么好的办法,只能看源码,解决这个问题。思路是这样的,我找了一下那个check的改变位置,找到两处,一个是toggle方法,另外一个是setCheck方法。我们知道setCheck方法是我们可以自己设置,这个显示不是点击的时候,做的事,然后我就跟踪toggle方法,看谁调用了它。这个是switc...
2019-05-17 12:14:10 2490 1
原创 rxJava源码解析系列五之Disposable
这个系列的前几篇文章是传统rxjava的数据流传递模式,我们知道,observable的链式调用,是下游被观察者持有上有被观察者的过程,发起订阅的时候是上游观察者持有下游观察者的过程。到最先的被观察者,通过本层级实现的消息队列或者发射器开始发射数据流,而上游的观察者或消息队列持有下游的观察者,通过观察者的接Observer实现最终回调。以上是对以上几篇文章的总结,不明白的朋友可以详细看一下这个系列...
2019-05-04 12:58:17 2484 1
原创 Dialog基类封装-----自定义dialog
该封装类用于dialog中有比较多的业务逻辑import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.support.annotation.NonNull;import android.view.LayoutInflater;import a...
2018-12-06 12:18:47 819
原创 rxJava源码解析系列四之subscribeOn和observeOn的理解
本篇文章主要解决subscribeOn和observeOn这两个方法为什么subscribeOn只有一次有效果,observeOn切换多次回调的都有效果。不知道朋友有没有看过rxandroid的源码,如果看过的话,就会迎刃而解,没什么疑虑啦。没看过源码的朋友,可以看看我这个系列的前几篇文章,主要是系列二和系列三的文章,讲述了线程切换的问题。在这里我只说一下这两个方法线程切换的时机以及Obser...
2018-10-10 22:25:42 1634 1
原创 rxJava源码解析系列三之线程切换
接着上一篇文章<<rxJava和rxAndroid源码解析系列二之observer订阅>>继续说一下线程切换。在上一篇的<源代码片段15>中可以看出订阅事件以及扔到线程池中进行执行,也就是要订阅的东西已经切换线程了。上篇文章讲到<源代码片段19>中的代码片段source.subscribe(parent);也就是执行这句话,根据上一篇的关系引用图...
2018-10-09 09:05:09 749 1
原创 rxJava源码解析系列二之observer订阅
接着上一篇的demo继续写下去。没看过的朋友请点击 rxJava和rxAndroid源码解析系列一之链式调用Observable嵌套创建完Observable对象后,以后一步ObservableObserveOn.subscribe(new Observer<String>() {.....})这一步又发生了什么呢?接着跟踪源码。 @SchedulerSupport(Sc...
2018-10-01 16:22:30 995
原创 rxJava源码解析系列一之链式调用Observable嵌套
后期项目需要用RxJava和Rxandroid框架,趁着闲暇时间,学习一下框架。就从简单的demo开始,窥探这个异步框架的冰山一角。(建议打开编译工具,边看文章边源码,因为逻辑有点绕)废话不多说,直接上代码。另外说一下rxjava和rxandroid引用的版本 implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implement...
2018-09-30 23:55:46 2597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人