展会信息港展会大全

Activity与Thread之间的通讯
来源:互联网   发布日期:2016-01-14 10:10:40   浏览:3339次  

导读:在Android中要让Activity与Thread进行通讯 其实很简单。重点就在于android.os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用我们在Thread中可以通过Message来通知Handler,Handler在这里......

在Android中要让Activity与Thread进行通讯 其实很简单。

重点就在于android .os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用我们在Thread中可以通过Message来通知Handler,Handler在这里扮演着联系Acitivity与Thread之间的角色。

首先在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所传递的信息

01

mHandler = new Handler() {

02

public void handleMessage(Message msg) {

03

switch (msg.what) {

04

case TestHandler.GUINOTIFIER://TestHandler是Activity的类名

05

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

06

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

07

break;

08

}

09

super.handleMessage(msg);

10

}

11

};

接下来我们自定义一个Thread

01

class LooperThread extends Thread {

02

public void run() {

03

super.run();

04

try {

05

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

06

long time = System.currentTimeMillis();

07

final Calendar mCalendar = Calendar.getInstance();

08

mCalendar.setTimeInMillis(time);

09

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等等。

赞助本站

人工智能实验室

相关热词: Activity Thread 通讯

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港