Android Handler研究

【Android Handler研究】满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述Android Handler研究相关的知识,希望能为你提供帮助。
a. 解决问题
跨线程通信(UI线程)
b. 用途
1. 延时执行message或runnable
2. 子线程执行耗时操作
c. 原理
Message: 消息实体
MessageQueue: 消息队列
Looper:轮询消息队列
d. 注意点
1. UI线程Handler如何初始化的
ActivityThread的static main方法中执行Looper.prepareMainLooper();
2. 任意线程实现消息队列
new Thread(){
run(){
//1. 准备Looper对象
Looper.prepare();
//2. 子线程创建Handler
handler = new Handler(){
handlerMessage(){
}
}
//3. 轮询方法
Lopper.loop();
}
}.start();
3. 为什么主线程不会因为Looper.loop()死循环卡死?
利用Linux管道(Pipe/epoll),简单说就是在主线程的MessageQueue没有消息时,便阻塞在loop的messageQueue.next()中的nativePollOnce()方法里.
所以说,主线程大多数时候处于休眠状态,不会消耗大量cpu资源

    推荐阅读