Android 结合源码和实例理解消息机制

写在前面:
一直对Android消息机制的实现比较感兴趣,尤其是最近在做开发时大量使用这种机制进行网络数据处理后的显示,很有必要进一步总结一下,之前有写过关于消息机制的文章,但是现在看来理解的实在是太肤浅了。在此一并归纳,也算是对之前落下任务的一个交代吧。

首先从一个经典的主线程和子线程进行消息通信的实例入手,一步步进行解析。

主线程和子线程之间消息通信实例

该例子完成了主线程和子线程之间循环发送消息的功能,子线程将一段字符发给主线程,主线程用Toast展示出来,线程之间每隔两秒进行一次消息传递。

主线程类代码如下:

1.package com.elvis.handlerGoActivity;
2.import android.app.Activity;
3.import android.os.Bundle;
4.import android.os.Handler;
5.import android.os.Message;
6.import android.widget.Toast; 
7./**
 * 这个类是主线程,它每隔两秒就发送一个Message给线程,线程收到Message后9将发送一个Message给主线程,主线程收到Message后会将Message内容Toast出10来
 */
10.public class HandlerTestActivity extends Activity {
   
11    private Handler uiHandler;
12    private ThreadWithLooper thread;
13    private Runnable showRunable;
14    @Override
15    public void onCreate(Bundle savedInstanceState) {
16       super.onCreate(savedInstanceState);
17       setContentView(R.layout.main);
18       uiHandler=new Handler(){
19           @Override
20            public void handleMessage(Message msg) {
21                switch(msg.what){
22                case Messages.MSG_HELLO:
23                     Toast.makeText(HandlerTestActivity.this,     (String)msg.obj, Toast.LENGTH_SHORT).show();
24                    break;
25                     
26                }
27            }
28        };
29        thread=new ThreadWithLooper(uiHandler);
30         
31        thread.start();
32        showRunable=new Runnable() {
33             
34            @Override
35            public void run() {
36                //給线程发送一个Message
                37thread.getHandler().sendEmptyMessage(Messages.MSG_HELLO);
38                uiHandler.postDelayed(this, 2*1000);
39            }
40        };
41        uiHandler.post(showRunable);
42         
43    }
44     
45    @Override
46    protected void onStop() {
47        super.onStop();
48        uiHandler.removeCallbacks(showRunable);
49    }
50}

子线程类代码:

1package com.elvis.handlerGoActivity;
2import android.os.Handler;
3import android.os.Looper;
4import android.os.Message;
5 
6/**
 * 从线程发送消息到UI线程&
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值