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么?

Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验

Android开发学习之路--异步消息Handler,Message,Looper和AsyncTask之初体验