android 线程消息处理【之消息处理中再处理的个人学习小思考】
2014-10-24 11:10
387 查看
android 工程中只有两类线程:ui线程和非ui线程。
ui线程是用来处理ui界面更新,非ui线程是用来处理一些耗时的服务,因为ui线程如果界面卡死20s,会报anr错误。当然这一切,目的这是要把这线程的分类概念让开发者彻底接受,并理解。
那么ui线程,和非ui线程,必然存在通信,非ui执行出结果,再消息推送致ui线程,ui线程处理接收到的结果,有可能更新ui。
这种消息机制的传递就是:handler+looper
handler 用来处理,looper用来存消息,它有消息队列。 一个线程都允许有且只有一个looper,一个handler【所以也可以没有】,至于handler是哪个线程的,它所依赖的looper决定。若构造函数无参,则依赖当前线程。自己线程的handler处理自己线程的消息队列中的消息。
message 是消息,它是一个结构体数据,它有what,when,arg1,arg2,obj 等属性。他的构造函数是无参的【new Message()】,但是通常情况下用handler.obtainMessage()。为什么呢?看源码:
ui线程是用来处理ui界面更新,非ui线程是用来处理一些耗时的服务,因为ui线程如果界面卡死20s,会报anr错误。当然这一切,目的这是要把这线程的分类概念让开发者彻底接受,并理解。
那么ui线程,和非ui线程,必然存在通信,非ui执行出结果,再消息推送致ui线程,ui线程处理接收到的结果,有可能更新ui。
这种消息机制的传递就是:handler+looper
handler 用来处理,looper用来存消息,它有消息队列。 一个线程都允许有且只有一个looper,一个handler【所以也可以没有】,至于handler是哪个线程的,它所依赖的looper决定。若构造函数无参,则依赖当前线程。自己线程的handler处理自己线程的消息队列中的消息。
message 是消息,它是一个结构体数据,它有what,when,arg1,arg2,obj 等属性。他的构造函数是无参的【new Message()】,但是通常情况下用handler.obtainMessage()。为什么呢?看源码:
相关文章推荐
- 个人学习_ Android异步消息处理机制
- Android学习—— Handler 的消息发送,在新的线程处理消息
- android个人学习笔记:Unable to open sync connection!异常处理
- 线程、消息-Android入门开发系列学习之 Handler使用-by小雨
- Android学习路线(三十二)在非UI线程中处理Bitmap
- Android FrameWork 之异步消息处理线程
- android异步消息处理机制 handler MessageQueue Looper 类 学习
- Android线程之异步消息处理机制(二)——Message、Handler、MessageQueue和Looper
- Android线程之异步消息处理机制(一)
- Android学习札记26:深入理解Android中的消息处理机制——Thread、Looper、MessageQueue和Handler(1)
- Android从入门到精通第12章:线程与消息处理
- 关于android Handler进行线程处理消息队列与线程队列线程无法停止的问题
- Android学习札记28:深入理解Android中的消息处理机制——Thread、Looper、MessageQueue和Handler(2)
- Learn From Android Source Code之异步消息处理线程
- 个人总结android消息处理机制:Looper,Handler,Message
- 深入理解Android的消息处理系统---Handler、Looper、Thread学习记录
- Android应用开发学习笔记之多线程与Handler消息处理机制
- Android学习篇章41-Handler子线程消息
- [学习总结]6、Android异步消息处理机制完全解析,带你从源码的角度彻底理解
- Android异步消息处理线程之----Looper+MessageQueue+Handler