Activity与Thread之间的通讯(old)
在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;
然后定义一些例子 里面需要的属性
public Calendar mCalendar;
public int mMinutes;
public int mHour;
public Handler mHandler;
private Thread mClockThread;
接着我们通过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();
复制代码
利用上面的例子我们可以扩展更多的应用,比如使用Thread进行上传下载 操作,完成后通知主Activity等等
转载于:https://www.cnblogs.com/boyupeng/archive/2011/02/14/2028580.html
Activity与Thread之间的通讯(old)相关推荐
- Android Bundle类,通过bundle实现在两个activity之间的通讯
根据google官方的文档(http://developer.android.com/reference/android/os/Bundle.html) Bundle类是一个key-value对,&q ...
- linux 和服务通讯,Android 的Activity和Service之间的通信
在Android中Activity负责前台界面展示,service负责后台的需要长期运行的任务.Activity和Service之间的通信主要由IBinder负责.在需要和Service通信的Acti ...
- 非常详细的测试unity与android之间的通讯操作
非常详细的测试unity与android之间的通讯操作 博客分类: unity3dandroid 非常详细的测试unity与android之间的通讯操作 转载自 http://www.narkii.c ...
- C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)
C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示) 作者:一点一滴的Beer http://beer.cnblogs.com/ 在程序设计中,涉及数据存储和数据交换的时候 ...
- java多线程有几种实现方法_Java多线程之间实现通讯
一.课程目标 多线程之间如何通讯 wait.notify.notifyAll()方法 lock 停止线程 守护线程 Join方法 优先级 Yield 二.多线程之间如何实现通讯 2.1 什么是多线程之 ...
- WWF系列之----关于Host与WorkflowInstance之间的通讯
关于Host与WorkflowInstance之间的通讯 工作流是将程序(实际上就是业务)流程独立出来,建立健壮的可伸缩的交互式的流程管理.其基本任务是保证每一个步骤必须严格地执行且仅可以执行一遍. ...
- .NET(C#)基于Socket编程实现平行主机之间网络通讯有图片传输的Demo演示
本文讲下C#通过Socket编程实现平行主机之间网络通讯的详细讲解,非常不错的博文,一起来看下吧. 在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式 ,都有这样一个概念 ...
- Message、Handler、Message Queue、Looper、Thread之间的关系(未完成)
1. 请解释下在单线程模型中Message.Handler.Message Queue.Looper.Thread之间的关系 2. 什么是IntentService?有何优点? 1) 它是对单线程消息 ...
- 多线程Synchronized锁的使用与线程之间的通讯
多线程Synchronized锁的使用与线程之间的通讯 一.什么是线程安全问题 二.如何解决线程安全问题 三.synchronized锁的基本用法 1.修饰代码块(this锁) 2.修饰实例方法(th ...
最新文章
- python读取csv文件制图-python读取CSV文件
- tomcat端口占用后的解决办法
- 在asp中怎么调用带输出参数的存储过程
- 茶苑机器人怎么看出来_小儿脑瘫怎么看出来?出现4个异常,该早点去看医生...
- [转载]PSCAD调用MATLAB/SIMULINK之接口元件设计
- 信息学奥赛一本通 1970:【15NOIP普及组】扫雷游戏 | OpenJudge NOI 1.8 14:扫雷游戏地雷数计算 | 洛谷 P2670 [NOIP2015 普及组] 扫雷游戏
- 浅谈三角带的使用及其分类
- Java中静态代码块
- buildconfiguration[C/C++]_[从netbeans里提取的通用构建C++项目的Makefile文件]
- Chukwa在百度的应用实践
- Linux多线程编程[精]
- 【机械仿真】基于matlab GUI 汽车悬架(钢板弹簧+减震器)设计【含Matlab源码 1631期】
- 用友U8安装...(转)
- iPhone手机弹窗BUG!每两分钟弹窗提醒一次,解决方案在这里
- 小技巧:DELL成就5620笔记本电脑网卡驱动
- HQChart使用教程85-股票复权计算
- 各种三角形边长的计算公式
- 系统分析员到底做什么?
- 2021高考体检成绩查询,2021年重庆高考体检报告结果查询时间及查询网址入口
- 17 -> 详解 openWRT 的 gpio 配置关系说明