学习-Handler消息传递简介

2016-03-28 / 12 阅读 / Android

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来发送消息。

相关推荐