今天这篇文章只讲一下怎么使用Handler实现子线程与子线程之间、子线程与主线程之间如何进行通信,关于具体的内部实现因为我也没研究过,所以这篇文章讲不了。
一、子线程向主线程传值:
这个实现比较简单,因为主线程自带Looper机制,所有我们不用创建Looper了,看一下代码吧:
首选在主线程里创建一个Handler
1.Handler mHandler = new Handler(){
2.
3. @Override
4. public void handleMessage(Message msg) {
5. super.handleMessage(msg);
6. switch (msg.what) {
7. case 0:
8. //do something,refresh UI;
9. break;
10. default:
11. break;
12. }
13. }
14.
15.};
然后开启一个子线程,在子线程里直接使用Handler发送消息即可
new Thread() {
public void run() {
Message message = new Message();
message.obj = "子线程发送的消息Hi~Hi";
mHandler .sendMessage(message);
};
}.start();
二、主线程向子线程里发送消息:
主线程向子线程发送消息的话,我们需要在子线程里初始化Looper,并在主线程里创建的Handler引用子线程的Looper(Handler中引用的是哪个线程的Looper,就在哪个线程里处理消息),下面看代码: