Android 消息机制 - 实例+源码解读

2020-02-05  本文已影响0人  Ronnie_火老师

Handler是Android消息机制的上层接口,Android消息机制主要是指Handler的运行机制,Handler需要底层MessageQueue和Looper的支撑。本文以实例+源码解读的方式解释相关概念。

线程基础知识

Handler的简介与使用

 public static Handler mianHandler;//主线程Handler
  public static Handler thradHandler;//子线程Handler
  /**
   * 测试Handler,该方法运行在主线程中
   */
  public void testThread() {
  
    mianHandler = new Handler() {
      @Override
      public void handleMessage(Message msg) {
        Log.e(" Ronnie", Thread.currentThread().getName() + "---" + msg.what);
        thradHandler.sendEmptyMessage(2);
      }
    };

    new Thread(new Runnable() {
      @Override
      public void run() {
        Looper.prepare();
        thradHandler = new Handler() {
          @Override
          public void handleMessage(Message msg) {
            Log.e("Ronnie",  Thread.currentThread().getName()+ "---" + msg.what);
          }
        };
        mianHandler.sendEmptyMessage(1);
        Looper.loop();
        //这里写代码也不会得到执行,因为loop是一个死循环
      }
    }, "Thread2").start();
  }
10-11 08:29:18.657 10703-10703/com.Ronnie.testproject E/Ronnie: main---1
10-11 08:29:18.657 10703-10723/com.Ronnie.testproject E/Ronnie: Thread2---2

源码分析

Looper.prepare()
new Handler()

这里我们先做一个小结,经过上述步骤,已经完成了:a.创建消息队列、创建线程对应的Looper、创建Handler,并达到了消息队列与Looper关联、消息队列与Handler关联、Handler与Looper关联。

Looper.loop()
Handler.sendMessage(Message msg)

总结:

参考资料:

上一篇 下一篇

猜你喜欢

热点阅读