


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、线程的使用 三种方式 Android 中常用定时器在 Android 中,经常用到的定时器主要有以下几种实 现:一、采用 Handler 与线程的 sleep(long ) 方法二、采用 Handler 的 postDelayed(Runnable, long) 方法三、采用 Handler 与 timer 及 TimerTask 结合的方法。 下面逐一介绍:一、采用 Handle 与线程的 sleep(long ) 方法Handler 主要用来处理接受到的消息。这只是最主要的方法, 当然 Handler 里还有其他的方法供实现,有兴趣的可以去查 API ,这里不过多解释。1. 定义一个 Ha
2、ndler 类,用于处理接受到的 Message. Handler handler = new Handler() public void handleMessage(Message msg) /要做的事情 super.handleMessage(msg); ;2. 新建一个实现 Runnable 接口的线程类。如下: public class MyThread implements RunnableOverridepublic void run() / TODO Auto-generated method stub while (true) try Thread.sleep(10000);/
3、 线程暂停 10 秒,单位毫秒 Message message=new Message();message.what=1; handler.sendMessage(message);/发 送消息 catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();3. 在需要启动线程的地方加入下面语句: new Thread(new MyThread().start();4. 启动线程后,线程每10s发送一次消息。 实例: Java 代码public class MyCounter exten
4、ds Activityprivate TextView mTextView;private Handler handler;private int count;Overrideprotected void onCreate(Bundle savedInstanceState) mTextView = (TextView)handler = new Handler(Looper.getMainLooper()Overridepublic void handleMessage(Message msg) super.handleMessage(msg);if(msg.what = 1) /添加要干的
5、事情 count+; mTextView.setText(count + "");new Thread(new MyThread().start();Log.e("tag", "cehsi");public class MyThread implements Runnablepublic void run() while(true)try Message message = new Message(); message.what = 1;Thread.sleep(1000); / 间隔时间在这里定/通过 handler 把这个线程的线
6、程体放到主线程的消息队列中,使得该线程在主线程中执行handler.sendMessage(message); catch (Exception e) e.printStackTrace(); extends Activity private TextView mTextView;private Handler handler;private int count;Overrideprotected void onCreate(Bundle savedInstanceState) mTextView = = new Handler(Looper.getMainLooper()Overridepu
7、blic void handleMessage(Message msg) super.handleMessage(msg);if(msg.what = 1)/添加要干的事情count+;mTextView.setText(count + "");new Thread(new MyThread().start();Log.e("tag", "cehsi"); public class MyThread implements Runnable public void run() while(true) try Message messag
8、e = new Message(); message.what = 1;Thread.sleep(1000); /间隔时间在这里定 / 通过 handler 把这个线程的线程体放到主线 程的消息队列中,使得该线程在主线程中执行handler.sendMessage(message); catch (Exception e) e.printStackTrace();二、采用 Handler 的 postDelayed(Runnable, long) 方法 这个实现比较简单一些:1. Handler handler=new Handler(); Runnable runnable=new Runn
9、able() Overridepublic void run() / TODO Auto-generated method stub/要做的事情 handler.postDelayed(this, 2000);2. 启动计时器:handler.postDelayed(runnable, 2000);/ 每两秒执行一次 runnable.3. 停止计时器: handler.removeCallbacks(runnable);Java 代码public class MyCounter extends Activity private TextView mTextView;private Handl
10、er handler;private int count;private Runnable myRunnable;Overrideprotected void onCreate(Bundle savedInstanceState) mTextView = handler = new Handler(Looper.getMainLooper(); myRunnable = new Runnable()Overridepublic void run() /此处添加每个一段时间要执行的语句 count+;mTextView.setText(count + ""); handler
11、.postDelayed(this, 1000);/启动计时器handler.postDelayed(myRunnable, 1000);Override protected void onStop() super.onStop(); handler.removeCallbacks(myRunnable); private Handler handler;private int count;private Runnable myRunnable;Overrideprotected void onCreate(Bundle savedInstanceState) mTextView = hand
12、ler = new Handler(Looper.getMainLooper(); myRunnable = new Runnable()Overridepublic void run() /此处添加每个一段时间要执行的语句 count+;mTextView.setText(count + ""); handler.postDelayed(this, 1000);/启动计时器handler.postDelayed(myRunnable, 1000); Overrideprotected void onStop() super.onStop();handler.removeC
13、allbacks(myRunnable);三、采用 Handler 与 timer 及 TimerTask 结合的方法1. 定义定时器、定时器任务及 Handler 句柄 private final Timer timer = new Timer();private TimerTask task;Handler handler = new Handler() Overridepublic void handleMessage(Message msg) / TODO Auto-generated method stub/要做的事情 super.handleMessage(msg);2. 初始化计
14、时器任务。task = new TimerTask() Overridepublic void run() / TODO Auto-generated method stubMessage message = new Message();message.what = 1;handler.sendMessage(message);3. 启动定时器timer.schedule(task, 2000, 2000); 简要说一下上面三步提到的一些内容。1.定时器任务( TimerTask )顾名思义,就是说当定时器到达 指定的时间时要做的工作, 这里是想 Handler 发送一个消息, 由 Handl
15、er 类进行处理。2. 这个方 法是说,dalay/1000秒后执行task.只执行一次。:这个方法是说,delay/1000秒后执行task,然后进过 period/1000秒再次执行task,这个用于循环任务,执行无数 次,当然,你可以用 timer.cancel(); 取消计时器的执行。Java 代码public class MyCounter extends Activityprivate TextView mTextView;private Handler handler;private int count;private Timer timer = new Timer();Overrideprotected void onCreate(Bundle savedInstanceState) mTextView = (TextView)handler = new Handler(Looper.getMainLooper()Overridepublic void handleMessage(Message msg) super.handleMessage(msg); if
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 互联网+农业金融服务模式及其风险管理
- 高职院校田径运动训练计划与实施的协调机制
- 多国法律与标准对跨境数据治理的协调
- 河南省周口市扶沟县2025届八年级数学第一学期期末质量跟踪监视试题含解析
- 2025至2030全球及中国白金戒指行业项目调研及市场前景预测评估报告
- 矿产资源采石场股份买卖协议
- 航空航天产业财税代理与研发费用加计扣除合同
- 老年人的健康饮食与烹饪技巧
- 液态金属电极行业投资机会与风险评估
- 高新技术在特定区域的产业化发展指导研究
- 福建省机关工作人员年度考核登记表
- JBT 7808-2010 无损检测仪器 工业X射线探伤机主参数系列
- DB44-T 2474-2024 自然教育标识设置指引
- 研学基地合作协议
- 驾驶员行为规范管理制度
- (高清版)JTG D81-2017 公路交通安全设施设计规范
- 《锅炉水介质检验导则标准-征求意见稿》
- 2023年阳江市阳东区教育局招聘事业编制教师考试真题
- 利用隐私保护技术实现网络爬虫安全抓取
- 成本会计岗位竞聘稿
- 2024年新版消防设施操作员初级考试题库(含答案)
评论
0/150
提交评论