Android Handler 机制
Handler 与消息的传递和处理有关。
Handler 可以用来发送和处理消息,有专门的 Message 类构建消息,还可以通过线程的消息队列处理 Runnable 对象,而 Runnable 对象就是一个子线程,所以 Handler 的用处真是太大了。
每一个 Handler 实例会和一个单一的线程以及线程的消息队列关联,创建的 Handler 对象会绑定一个 Looper 对象,Looper 可以理解为一个循环者,处理 Handler 传递过来的消息和 Runnable 对象。消息队列和线程就是属于 Looper 的,所以 Handler 实际上是和 Looper 的消息队列和线程关联。
Handler 有两个主要作用:
-
安排消息或 Runnable 对象在将来的某个时间点被执行
-
把一个动作入队到不同于当前线程的子线程
我们可以用
post(Runnable)
postAtTime(java.lang.Runnable, long)
postDelayed(Runnable, Object, long)
sendEmptyMessage(int)
sendMessage(Message)
sendMessageAtTime(Message, long)
sendMessageDelayed(Message, long)
这些方法完成消息的调度和安排。postXxx 方法把 Runnable 对象推入消息队列,当消息队列接收到他们的时候就去调用或执行,sendMessageXxx 方法把封装了一捆数据的 Message 对象推入消息队列,通过 Handler 对象的 handleMessage(Message) 方法处理他们,该方法需要在创建