自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 android kotlin 协程源码分析withContext挂载和恢复

我们根据业务代码,子协程切换到io线程后,执行AnonymousClass1的resumeWith方法,根据代码片段3的内容,invokeSuspend子协程业务执行完毕后,会进行if判断,completion的类型,AnonymousClass1的成员completion为DispatchedCoroutine,所以直接执行completion.resumeWith。这边连接我们知道,我们的业务代码会生成一个匿名内部类,其父类继承SuspendLambda,反编译代码如下()

2024-02-19 15:00:11 1131

原创 kotlin协程代码分析launch

android kotlin 协程 launch源码分析

2024-02-19 11:37:47 939

原创 协程源码解析准备之CoroutineContext简析

协程里面CoroutineContext是个很重要的概念,从描述看,类似一个集合,把关键元素都放入里面,根据key可以拿到不同类型的对象。和map的区别在于,map的value是相通类型,需要强制类型转换,而context根据key的类型返回不同类型的对象,不用强制类型转换。可以看到,这里有个特殊的存在,即ContinuationInterceptor 协程拦截器元素,始终放在CombinedContext的首位,结合CombinedContext的代码。既然是类似集合,需要提供访问、添加和删除的接口。

2024-02-17 15:29:18 147

原创 自定义简易的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 155

原创 SwitchCompact拦截点击事件

因为项目需要,点击的时候,根据相应的条件判断,如果条件成立,滑块滚动,否则不滚动。然后网上查了一圈,没有什么好的办法,只能看源码,解决这个问题。思路是这样的,我找了一下那个check的改变位置,找到两处,一个是toggle方法,另外一个是setCheck方法。我们知道setCheck方法是我们可以自己设置,这个显示不是点击的时候,做的事,然后我就跟踪toggle方法,看谁调用了它。这个是switc...

2019-05-17 12:14:10 2393 1

原创 rxJava源码解析系列五之Disposable

这个系列的前几篇文章是传统rxjava的数据流传递模式,我们知道,observable的链式调用,是下游被观察者持有上有被观察者的过程,发起订阅的时候是上游观察者持有下游观察者的过程。到最先的被观察者,通过本层级实现的消息队列或者发射器开始发射数据流,而上游的观察者或消息队列持有下游的观察者,通过观察者的接Observer实现最终回调。以上是对以上几篇文章的总结,不明白的朋友可以详细看一下这个系列...

2019-05-04 12:58:17 2315 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 796

原创 rxJava源码解析系列四之subscribeOn和observeOn的理解

本篇文章主要解决subscribeOn和observeOn这两个方法为什么subscribeOn只有一次有效果,observeOn切换多次回调的都有效果。不知道朋友有没有看过rxandroid的源码,如果看过的话,就会迎刃而解,没什么疑虑啦。没看过源码的朋友,可以看看我这个系列的前几篇文章,主要是系列二和系列三的文章,讲述了线程切换的问题。在这里我只说一下这两个方法线程切换的时机以及Obser...

2018-10-10 22:25:42 1605 1

原创 rxJava源码解析系列三之线程切换

接着上一篇文章<<rxJava和rxAndroid源码解析系列二之observer订阅>>继续说一下线程切换。在上一篇的<源代码片段15>中可以看出订阅事件以及扔到线程池中进行执行,也就是要订阅的东西已经切换线程了。上篇文章讲到<源代码片段19>中的代码片段source.subscribe(parent);也就是执行这句话,根据上一篇的关系引用图...

2018-10-09 09:05:09 686 1

原创 rxJava源码解析系列二之observer订阅

接着上一篇的demo继续写下去。没看过的朋友请点击 rxJava和rxAndroid源码解析系列一之链式调用Observable嵌套创建完Observable对象后,以后一步ObservableObserveOn.subscribe(new Observer<String>() {.....})这一步又发生了什么呢?接着跟踪源码。 @SchedulerSupport(Sc...

2018-10-01 16:22:30 971

原创 rxJava源码解析系列一之链式调用Observable嵌套

后期项目需要用RxJava和Rxandroid框架,趁着闲暇时间,学习一下框架。就从简单的demo开始,窥探这个异步框架的冰山一角。(建议打开编译工具,边看文章边源码,因为逻辑有点绕)废话不多说,直接上代码。另外说一下rxjava和rxandroid引用的版本 implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implement...

2018-09-30 23:55:46 2560

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除