Handler是什么?为什么要有Handler了?
Handler是Android中的一个消息传递机制,有点类似“事件处理”。那为什么要有Handler了。Android是一个面向移动设备的系统,所以一般配置不是特别的高,包括android应用程序运行的虚拟机也是因此而设计的。因此出于性能优化考虑,Android的UI操作不是线程安全的。这就意味着有多个线程并发操作UI组件,可能会导致线程安全问题。为此,Android规定了,只允许UI线程来操作UI组件。
那么便带来一个问题,其他线程如何与UI线程通信了?于是便出现了Handler消息传递的机制。说的简单点,Handler就是用来在不同线程中传递消息而设计的。
Handler类简介
Handler类的作用:
1.在子线程用发送消息
2.在主线程获取并处理消息
Handler类的一些方法:
发送消息的方法
public final boolean sendMessage(Message msg)
public final boolean sendEmptyMessage(int what)
public final boolean sendEmptyMessageAtTime(int what, long uptimeMillis)
public final boolean sendEmptyMessageDelayed(int what, long delayMillis)
public final boolean sendMessageAtFrontOfQueue(Message msg)
public boolean sendMessageAtTime(Message msg, long uptimeMillis)
public final boolean sendMessageDelayed(Message msg, long delayMillis)
查看消息的方法
public final boolean hasMessages(int what)
检查消息列队是否包含what的消息public final boolean hasMessages(int what, Object object)
检查消息列队是否包含what且object属性为指定对象的消息public final Message obtainMessage()
public final Message obtainMessage(int what)
public final Message obtainMessage(int what, Object obj)
public final Message obtainMessage(int what, int arg1, int arg2)
获取消息
处理消息的方法
public void handleMessage(Message msg)
处理消息
一般Handler类是在UI线程声明,子线程通过调用sendMessage来发送消息。