黑马程序员技术交流社区
标题:
Activity与Thread之间的通讯?
[打印本页]
作者:
z820661319
时间:
2015-1-5 10:55
标题:
Activity与Thread之间的通讯?
请给代码解释谢谢!
作者:
y1787257661
时间:
2015-1-5 10:55
在Android中要让Activity与Thread进行通讯 其实很简单。
重点就在于android .os.Handler、java.lang.Thread以及android.os.Message这三个类的整合应用我们在Thread中可以通过Message来通知Handler,Handler在这里扮演着联系Acitivity与Thread之间的角色。
首先在Acitivity中我们要定义 一个常量来作为判断标示
private static final int GUINOTIFIER = 0x1234;
复制代码
接着我们通过Handler来接收Thread所传递的信息
mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case TestHandler.GUINOTIFIER://TestHandler是Activity的类名
//得到Handle的通知了 这个时候你可以做相应的操作,本例是使用TextView 来显示时间
mTextView .setText(mHour + " : " + mMinutes);
break;
}
super.handleMessage(msg);
}
};
复制代码
接下来我们自定义一个Thread
class LooperThread extends Thread {
public void run() {
super.run();
try {
do {//每间隔一秒取一次系统 时间
long time = System.currentTimeMillis();
final Calendar mCalendar = Calendar.getInstance();
mCalendar.setTimeInMillis(time);
mHour = mCalendar.get(Calendar.HOUR);
mMinutes = mCalendar.get(Calendar.MINUTE);
Thread.sleep(1000);
//取得系统时间后发送消息给Handler
Message m = new Message();
m.what = Ex04_14.GUINOTIFIER;
Ex04_14.this.mHandler.sendMessage(m);
} while (!LooperThread.interrupted());//当系统发出终端命令时停止循环
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
复制代码
最后我们启动线程
mClockThread = new LooperThread();
mClockThread.start();
复制代码
作者:
y1787257661
时间:
2015-1-5 11:04
不懂可以再提问
作者:
z820661319
时间:
2015-1-5 11:21
y1787257661 发表于 2015-1-5 11:04
不懂可以再提问
谢谢!!!
作者:
李票
时间:
2015-1-5 19:44
谢谢楼主分享又学到东西了
作者:
zhaojiajun
时间:
2015-1-6 14:17
受教受教了啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2