阅读此文,请先阅读以下相关连接:
1. Android 消息处理机制之一: Handler与Message
2. Android 消息处理机制之二: Message中obtain()源代码剖析
在前面的两件中我们学习了Handler和Message的基本使用方法[Android消息处理机制之Handler与Message],还有Message中obtain()的几种重载方法的使用方式的不同[Android消息处理机制 Message中 btain()源代码剖析],这一讲我们来学习一下Handler中的sendMessage()的几种重载方法的使用方式的不同以及它们的源代码的剖析.
通过前面几讲的内容,我们知道Android不但可以使用异步任务处理多线程的问题,还可以通过Handler + Message + Thread 的方式进行,例如更新主线程UI等.整个架构图如下所示:
下面我就通过一个Demo来学习一下Handler中sendMessage()方法的几种重载方法,以及跟踪它们的源代码来知道它们之间的关系。
1. 使用Handler中的sendEmptyMessage(int what)方式来发送消息.
点击按钮发送消息,在Handler中做消息的处理。只发送一个带有what属性的消息。
在Handler中将消息取出打印在控制台中case R.id.button1: new Thread(new Runnable() { // 查看Handler的api,它有几种sendMessage()的方式 @Override public void run() { // 使用public final boolean sendEmptyMessage (int what) mHandler.sendEmptyMessage(3); } }).start(); break;
[分析源代码]:// Handler 可以接受或者发送消息,从消息队列中提取消息,用户更新UI的操作 protected static Handler mHandler = new Handler() { @Override public void handleMessage(android.os.Message msg) { System.out.println("--> what: " + msg.what); } };