hander机制

Hander机制,是我们在编程过程中,与应用程序之间进行交互用到最多的机制,当我们对应用程序进行UI操作的时候,我们不能在子线程(非UI线程)中直接对ui进行操作,这时候我们就需要用到handler,handler的原理是一个发送消息,处理消息的过程。

Android Handler机制 :每一个消息都需要被指定的Handler处理,通过Handler创建消息便可以完成此功能。Handler创建消息时首先查询消息池中是否有消息存在,如果有直接从消息池中取得,如果没有则重新初始化一个消息实例。使用消息池的好处是:消息不被使用时,并不作为垃圾回收,而是放入消息池,可供下次Handler创建消息时使用。消息池提高了消息对象的复用,减少系统垃圾回收的次数。

一个Thead中可以建立多个Hander,通过msg.target保证MessageQueue中的每个msg交由发送message的handler进行处理  ,但是每个线程中最多只有一个Looper,肯定也就一个MessageQuque。

Handler的具体用法有两种:
   a、1、在UI线程中创建handler
         2、把UI线程中创建好的handler的内存地址引用传递给子线程
         3、在子线程中的run方法中,进行handler消息池中消息的获取。
         4、封装消息内容
         5、通过handler发送该消息。
         6、在handler中接收该消息,进行消息处理。
      (PS:以上所有的handler,指的都是UI线程中创建的handler)
   b、1、在UI线程中获取Looper
         2、把UI线程中获取的Looper传递给子线程
         3、在子线程的run方法中通过looper的传递实例化handler
       (该handler即为处理UI控件的handler)
         4、直接复写该handler的handleMessage方法,完成UI更新。

你可能感兴趣的:(hander机制)