知乎上看了一篇非常不错的博文:有没有必要阅读ANDROID源码
痛定思过,为了更好的深入android体系,决定学习android framework层源码,就从最简单的android异步消息机制开始吧。
(一)Handler的常规使用方式
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 
 | public class MainActivity extends AppCompatActivity {
 public static final String TAG = MainActivity.class.getSimpleName();
 private TextView texttitle = null;
 
 /**
 * 在主线程中定义Handler,并实现对应的handleMessage方法
 */
 public static Handler mHandler = new Handler() {
 @Override
 public void handleMessage(Message msg) {
 if (msg.what == 101) {
 Log.i(TAG, "接收到handler消息...");
 }
 }
 };
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 
 texttitle = (TextView) findViewById(R.id.texttitle);
 texttitle.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 new Thread() {
 @Override
 public void run() {
 // 在子线程中发送异步消息
 mHandler.sendEmptyMessage(101);
 }
 }.start();
 }
 });
 }
 }
 
 | 
可以看出,一般handler的使用方式都是在主线程中定义Handler,然后在子线程中调用mHandler.sendEmptyMessage();方法,然么这里有一个疑问了,我们可以在子线程中定义Handler么?