如何用Kotlin Coroutines和Architecture Components进行And(3)

尽管并没有与活动生命周期紧密结合,我们仍然需要采取某种方式以发布应用模型的当前状态,从而将其显示在某些特定位置(在活动中)。在这方面,LiveData 能够发挥良好作用。

LiveData类似于对RxJava BehaviorSubject的二次创造……其拥有一项observable可变值。其最重要的差异体现在订阅方式以及随后在MainActivity当中进行查看的方式上。

不过LiveData也不具备像Observable那样强大的可组合运算符。大家可以查看LiveData提供的部分简单转换信息。

不过LiveData也不具备像Observable那样强大的可组合运算符。大家可以点击此处查看LiveData提供的部分简单转换信息

另一项区别在于,LiveData仅适用于Android,但RxJava主题则更具普适性; 因此我们可以利用常规非Android JUnit对后者进行轻松测 试。

最后一项不同是,LiveData具有“生命周期意识”——我将在下一篇介绍MainActivity类的博文当中对此作出详尽探讨。

在本示例中,我们选择使用MutableLiveData:各LiveData对象允许直接向其中随意添加新值。应用state由4个LiveData对象负责体现:city、charts、loading以及message。其中最重要的自然是charts:LiveData>对象,其代表着需要显示的当前图表清单。

所有会引发应用状态变化以及响应用户操作的任务皆由ACTOR负责执行。

Actors 非常强大,我将在下一篇博文中进行具体解释。

总结

我们已经为主actor作好了一切筹备。如果大家认真查看actor代码内容,那么即使您并不了解coroutines或者actors理论,应该也能够看懂其工作原理。虽然只有寥寥数行,但其中实际包含着本款应用的全部重要业务逻辑。最值得强调的就是我们调用 suspendable函数的位置(由绿线加灰色箭头所指定的部分)。第一个位置为suspendable点,即随用户操作进行迭代的部分; 第二个位置则为网络调用。归功于coroutines,这里的内容更近似于同步阻塞代码,但实际上却并不会拥塞该线程。

请大家期待我的下一篇博文,届时我将详细讲解关于actorschannels的一切。

原文链接:https://blog.elpassion.com/create-a-clean-code-app-with-kotlin-coroutines-and-android-architecture-components-f533b04b5431

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/3406c5529b18ed888d859c2046cc100e.html