Activity与Thread之间的通讯

ActivityThread之间的通讯 收藏

Android中要让ActivityThread进行通讯 其实很简单。
重点就在于android .os.Handlerjava.lang.Thread以及android.os.Message这三个类的整合应用 
我们在Thread中可以通过Message来通知HandlerHandler在这里扮演着联系AcitivityThread之间的角色。


首先在Acitivity中我们要定义 一个常量来作为判断标示

1.            private static final int GUINOTIFIER = 0x1234;

然后定义一些例子 里面需要的属性

1.            public Calendar mCalendar;

2.            public int mMinutes;

3.            public int mHour;

4.            public Handler mHandler;

5.            private Thread mClockThread;

接着我们通过Handler来接收Thread所传递的信息

1.            mHandler = new Handler() {

2.                        public void handleMessage(Message msg) {

3.                            switch (msg.what) {

4.                                case TestHandler.GUINOTIFIER://TestHandlerActivity的类名

5.                                    //得到Handle的通知了 这个时候你可以做相应的操作,本例是使用TextView 来显示时间

6.                                    mTextView .setText(mHour + " : " + mMinutes);

7.                                    break;

8.                            }

9.                            super.handleMessage(msg);

10.                   }

11.               };

接下来我们自定义一个Thread

1.            class LooperThread extends Thread {

2.                    public void run() {

3.                        super.run();

4.                        try {

5.                            do {//每间隔一秒取一次系统 时间

6.                                long time = System.currentTimeMillis();

7.                                final Calendar mCalendar = Calendar.getInstance();

8.                                mCalendar.setTimeInMillis(time);

9.                                mHour = mCalendar.get(Calendar.HOUR);

10.                           mMinutes = mCalendar.get(Calendar.MINUTE);

11.                           Thread.sleep(1000);

12.                           //取得系统时间后发送消息给Handler

13.                           Message m = new Message();

14.                           m.what = Ex04_14.GUINOTIFIER;

15.                           Ex04_14.this.mHandler.sendMessage(m);

16.                       } while (!LooperThread.interrupted());//当系统发出终端命令时停止循环

17.                   } catch (InterruptedException e) {

18.                       e.printStackTrace();

19.                   }

20.               }

21.           }

复制代码

最后我们启动线程

1.            mClockThread = new LooperThread();

2.            mClockThread.start();

利用上面的例子我们可以扩展更多的应用,比如使用Thread进行上传下载 操作,完成后通知主Activity等等

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值