Android Handler机制总结
Handle机制
APP的启动过程中调用ActivityThread类main方法初始化MainLooper
Handler创建Message并发送给Looper
Looper循环处理MessageQueue的Message
最后message通过target找到发送消息相对应的handle进行回调处理。子线程创建handle
Thread { //初始化线程looper对象 Looper.prepare() //初始化子线程handler,handler关联子线程looper threadHandler = Handler( Looper.myLooper()!!, Handler.Callback { Log.i("milin", "threadHandler:${it.what}") return@Callback true }) //调用此方法,消息才会循环处理 Looper.loop(); //发送消息 threadHandler?.sendEmptyMessage(123) }.start()
主线程Looper.loop()一直死循环,为什么没有卡死?
主要死循环中Looper.loop()中Message msg = queue.next(); // might block
没有消息Linux底层一直在等待,不占用CPU。
具体看nativePollOnce函数分析
Comments