Android Handler研究
Posted 码农也疯狂
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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资源
以上是关于Android Handler研究的主要内容,如果未能解决你的问题,请参考以下文章
Android开发:都快 2022 年了,还有人在研究 Handler?
这都 2022 年了,Android开发还有人在研究 Handler源码?
这都 2022 年了,Android开发还有人在研究 Handler源码?
Android 开发有必要去研究Handler和Binder么?