可以使用单一实例模式扩展 LiveData 对象以封装系统服务,以便在应用中共享它们。
相关链接:https://developer.android.google.cn/topic/libraries/architecture/livedata
=============================================================================
什么是异步?
异步就是同时进行一个以上彼此目的不同的任务。
但是对于有前后依赖关系的任务,异步该如何处理呢?
利用异步中的回调机制处理。
为什么需要异步回调机制?
因为不同的任务之间存在前后的依赖关系。
异步回调机制有什么缺点?
代码结构过分耦合,遇到多重函数回调的嵌套耦合,也就是回调地狱,代码会难以维护。
解决回调地狱的方案有什么?
链式调用结构。
常见方式就是使用RxJava,它是反应函数式编程在Java中的实现。
但是RxJava中流的创建、转化与消费都需要使用到各种类和丰富的操作符,加大了RxJava的学习成本。
减少在无封装情况下使用RxJava,因为你无法保证团队里面的每一个成员都能看懂它,并且在修改时都能做出正确选择。
在串行的执行中,虽然代码确实是顺序执行的,但其实是在不同的线程上顺序执行的。那为什么在串行的执行中代码执行顺序一致,却还要使用回调呢?
因为串行的执行中,执行是阻塞式的,主线程的阻塞会导致很严重的问题,所以所有的耗时操作不能在主线程中执行,所以就需要多线程并行来执行。
在并行的执行中,异步回调其实就是代码的多线程顺序执行。那能不能既按照顺序的方式编写代码,又可以让代码在不同的线程顺序执行,自动完成线程的切换工作呢?
那就是Kotlin协程。
Kotlin 的协程是一种无栈协程的实现,它的控制流转依靠对协程体本身编译生成的状态机的状态流转来实现,变量保存也是通过闭包语法来实现的。
<