2.7 RxKotlin
RxKotlin可以理解为RxJava在Kotlin上的一个变种,原理都是一样的 , 只是操作语言变成了Kotlin,然后封装了一下使得可以更优雅的调用 , 这里给大家一个具体的实现案例,不再过多讲解 。
private fun test() {Observable.create { 1 }.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribeBy(onNext = {},onError = {})}2.8 Kotlin协程
协程其实和上面所说的线程并不是一个概念,协程是什么?根据官方文档的描述,协程本质上是轻量级的线程 。既然是轻量,那说明协程的资源消耗和性能等方面和线程比起来应该是有优势的 。那这样看来我们以前使用多线程实现的异步功能 , 现在基本上都可以用协程来替代了 。
协程是一个全新的东西,介于篇幅这里就不展开讲解了 , 后面会专门写介绍协程的文章 。
三、总结今天总结了Android平台上实现多线程的几种方式,希望能给到需要的朋友一些帮助 。
最后在这里就还分享一份由大佬亲自收录整理的Android学习PDF 架构视频 面试文档 源码笔记,高级架构技术进阶脑图、Android开发面试专题资料 , 高级进阶架构资料
这些都是我现在闲暇时还会反复翻阅的精品资料 。里面对近几年的大厂面试高频知识点都有详细的讲解 。相信可以有效地帮助大家掌握知识、理解原理,帮助大家在未来取得一份不错的答卷 。
当然,你也可以拿去查漏补缺,提升自身的竞争力 。
真心希望可以帮助到大家,Android路漫漫,共勉!
如果你有需要的话,只需私信我【进阶】即可获取
文章插图
文章插图
文章插图
文章插图
Android多线程的四种方式:Handler、AsyncTask、ThreadPoolExector、IntentService异步通信机制,将工作线程中需更新UI的操作信息 传递到 UI主线程,从而实现 工作线程对UI的更新处理 , 最终实现异步消息的处理 。Handler不仅仅能将子线程的数据传递给主线程,它能实现任意两个线程的数据传递 。
(1)Message
Message 可以在线程之间传递消息 。可以在它的内部携带少量数据,用于在不同线程之间进行数据交换 。除了 what 字段,还可以使用 arg1 和 arg2 来携带整型数据 , 使用 obj 来携带 Object 数据 。
(2) Handler
Handler 作为处理中心,用于发送(sendMessage 系列方法)与处理消息(handleMessage 方法) 。
(3) MessageQueue
MessageQueue 用于存放所有通过 Handler 发送的消息 。这部分消息会一直存放在消息队列中,直到被处理 。每个线程中只会有一个 MessageQueue 对象
(4) Looper
Looper 用于管理 MessageQueue 队列,Looper对象通过loop()方法开启了一个死循环——for (;;){},不断地从looper内的MessageQueue中取出Message,并传递到 Handler 的 handleMessage() 方法中 。每个线程中只会有一个 Looper 对象 。
AsyncTask 是一种轻量级的任务异步类 , 可以在后台子线程执行任务,且将执行进度及执行结果传递给 UI 线程 。
(1)onPreExecute()
在 UI 线程上工作,在任务执行 doInBackground() 之前调用 。此步骤通常用于设置任务,例如在用户界面中显示进度条 。
(2)doInBackground(Params... params)
在子线程中工作 , 在 onPreExecute() 方法结束后执行 , 这一步被用于在后台执行长时间的任务,Params 参数通过 execute(Params) 方法被传递到此方法中 。任务执行结束后,将结果传递给 onPostExecute(Result) 方法,同时我们可以通过 publishProgress(Progress) 方法,将执行进度发送给 onProgressUpdate(Progress) 方法 。
- “海马体”长度不到10厘米 竟能偷走人类的记忆力
- 科学家揭秘:人类基因是肢体再生的关键
- 娜迦毒蛇,不是蛇而是世界上最辣的辣椒
- 世界最强十大航母:美航母还能领先多少年?
- 地球上的生物为何要依赖氧气生存?氧气是怎么产生的
- 大脑的奥秘,科学揭秘人类大脑如何一心二用!
- 破解挑战者号背后的五大惊天谜团?
- 形容自己再做也得不到重视的成语
- 形容一次又一次的发生的成语
- 形容声音吵很烦躁的成语