Kotlin协程分析(三)——理解协程上下文 Kotlin协程分析(三)——理解协程上下文一、简单介绍 CoroutineContext二、CoroutineContext 的数据结构1."put"(进一步了解CoroutineContext的数据结构)1.1 EmptyCoroutineContext协程上下文——CoroutineContext 是协程中很重要的环节,可以这么说,几乎整个协程的业务能力都是由它去完成的。说实话,这段源码不是很好看,要具体解释出来也比较困难,如果在接下来的阅读过程中有任何疑惑,我们一起探讨学习。一、简单介绍 Co
Android Kotlin 使用协程取代回调函数(suspendCoroutine 的用法) 文章目录一、简述二、示例2.1 普通写法2.2 协程写法三、带有成功和失败的回调3.1 普通写法3.2 协程写法3.3 使用协程上下文处理异常一、简述如果说大家对于协程已经有些熟悉了,但是手拿一把未开封的 绝世好剑,却无法发挥真正的威力!或者大家不是很熟悉协程,还不清楚协程所带来的好处是啥?这篇文章会为大家带来 通窍级别 的体验。二、示例2.1 普通写法以获取一个 View 的宽高为例。通常我们获取一个 View 的宽高,都是这么做的:view.post { val height = vi
Android singleInstance栈内打开Activity的方法 我们都知道,被标记了 singleInstance 的 Activity 会开启一个新的 Activity栈,并且该栈只允许这一个实例存在!在应对某些需求的时候,这样的特性可能会带来阻碍性的麻烦,所以我们
Kotlin协程分析(二)——suspendCoroutineUninterceptedOrReturn 文章目录一、简介二、分析三、suspendCoroutineUninterceptedOrReturn 怎么做到的?四、战略作用(重点)!!!1、两个`resume()` 为啥没有走两次回调2、为啥里边的**continuation**的`resume()` 会在返回值里呢?3、返回值为什么是 COROUTINE_SUSPENDED五、简单的用例(必读)六、小结一、简介这个函数的作用 至关重要。我们先回想之前创建 协程(Continuation) 的过程,是通过一个 suspend<R>()
Jetpack篇——LiveData扩展之Transformations 文章目录一、简单介绍二、map1、普通实现2、转换类型3、Kotlin 扩展4、源码分析三、switchMap1、普通实现2、对比 Map3、Kotlin 扩展4、源码分析四、distinctUntilChanged1、普通实现2、Kotlin 扩展3、源码分析五、小结一、简单介绍Transformations 类是 LiveData 的一个功能扩展类,其是一个私有化构造方法的工具类,且只提供 3 个方法使用,虽然数量不多,但胜在实用,这三个方法分别是:mapswitchMapdistinctU
Jetpack篇——LiveData扩展之MediatorLiveData源码分析 文章目录一、分析内容二、为什么 MediatorLiveData 需要激活才能够接管 LiveData 的响应事件?三、怎么激活 MediatorLiveData?**路线 1**一、分析内容在 上篇文章 中有了解过 MediatorLiveData 的使用过程,虽然使用的过程很简单,但是却出现了一个又一个的疑问……所以本篇文章就和大家一起来刨根问底,解疑答惑:为什么 MediatorLiveData 需要激活才能够接管 LiveData 的响应事件?怎么激活 MediatorLiveData ?
Jetpack篇——LiveData扩展之MediatorLiveData 文章目录一、导入一、导入其官方def lifecycle_version = "2.2.0"implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
Jetpack篇——LiveData源码分析 文章目录一、分析内容二、生命周期的管理三、值的传递1、初始化的值2、setValue 和 postValue四、setValue和postValue的区别五、总结一、分析内容在 Jetpack 中,LiveData 的源码是最简单的,整个 core 只包含 3 个文件,而且主类 LiveData 也不超过 500 行的代码,但其重要性却不言而喻……对于 LiveData 的源码,我们需要分析的有以下几个地方:其生命周期的管理值的传递(setValue和postValue)setValue和po
设计模式篇(十)——访问者模式 文章目录一、简介二、实现3、对比三、相关源码四、小结一、简介访问者模式(Visitor Pattern) 属于 行为型设计模式,看名字我就知道需要建立 访问者 和 被访问者 之间的关系。一般情况下,被访问者 都是不变的,比如说:书本、电脑等,而 访问者 可以是你或者其他人,这样就会导致一个现象:一千个人有一千个哈姆雷特;你拿电脑肝游戏,别人拿电脑生产力。定义: 某个行为,因为不同的 访问者 产生不同的效果;访问者 也能够访问多种行为。使用场景: 如果你需要对某个集合进行循环遍历并且因为元素有差异,
Android UVCCamera 拔出USB摄像头闪退问题 这是 native 的错误,因为手机连接摄像头,地狱级的调试体验,找了很久才找出这个问题,然后根据issue修改了c代码,重新编译了so库。使用下面的so库即可。看链接:so库