基本原理多线程
线程中调用Handler.sendMsg()方法(参数是Message对象),将须要Main线程处理的事件 添加到Main线程的MessageQueue中,Main线程经过MainLooper从消息队列中取出Handler发过来的这个消息时,会回调 Handler的handlerMessage()方法。oop
注意:(UI主要线程中才有Looper)
建立一个Handler时必定要关联一个Looper实例,默认构造方法Handler(),它是关联当前Thread的Looper
在建立一个Handler的时候也能够指定Looper,此时的Looper对象,能够是当前线程的也能够是其它线程的!ui
多线程中使用,容易形成内存泄漏;也能够用RunOnuiThread()来替代。线程
ps:MessageQueue是消息队列,先进先出,它的做用是保存有待线程处理的消息。对象
Handler只是处理它所关联的Looper中的MessageQueue中的Message,至于它哪一个线程的Looper,Handler并非很关心!队列