Android开发之实现定时器的三种方法
来源:互联网 发布:mac mini 装win 编辑:程序博客网 时间:2024/05/16 07:39
原文链接:http://blog.csdn.net/wwj_748/article/details/14644519
在Android开发中,定时器一般有以下3种实现方法:
一、采用Handler与线程的sleep(long)方法
二、采用Handler的postDelayed(Runnable, long)方法
三、采用Handler与timer及TimerTask结合的方法
下面逐一介绍:
一、采用Handle与线程的sleep(long)方法
Handler主要用来处理接受到的消息。这只是最主要的方法,当然Handler里还有其他的方法供实现,有兴趣的可以去查API,这里不过多解释。
1. 定义一个Handler类,用于处理接受到的Message。
- Handler handler = new Handler() {
- public void handleMessage(Message msg) {
- // 要做的事情
- super.handleMessage(msg);
- }
- };
- public class MyThread implements Runnable {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- while (true) {
- try {
- Thread.sleep(10000);// 线程暂停10秒,单位毫秒
- Message message = new Message();
- message.what = 1;
- handler.sendMessage(message);// 发送消息
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
- new Thread(new MyThread()).start();
二、采用Handler的postDelayed(Runnable, long)方法,这个实现比较简单一些。
1. 定义一个Handler类
- Handler handler=new Handler();
- Runnable runnable=new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- //要做的事情
- handler.postDelayed(this, 2000);
- }
- };
- handler.postDelayed(runnable, 2000);//每两秒执行一次runnable
3. 停止计时器
- handler.removeCallbacks(runnable);
1. 定义定时器、定时器任务及Handler句柄
- private final Timer timer = new Timer();
- private TimerTask task;
- Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- // 要做的事情
- super.handleMessage(msg);
- }
- };
- task = new TimerTask() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- Message message = new Message();
- message.what = 1;
- handler.sendMessage(message);
- }
- };
- timer.schedule(task, 2000, 2000);
简要说一下上面三步提到的一些内容:
1. 定时器任务(TimerTask)顾名思义,就是说当定时器到达指定的时间时要做的工作,这里是向Handler发送一个消息,由Handler类进行处理。
2. java.util.Timer.schedule(TimerTask task, long delay):这个方法是说,dalay/1000秒后执行task.只执行一次。
java.util.Timer.schedule(TimerTask task, long delay, long period):这个方法是说,delay/1000秒后执行task,然后经过period/1000秒再次执行task,这个用于循环任务,执行无数次,当然,你可以用timer.cancel();取消计时器的执行。
- Android开发之实现定时器的三种方法
- Android开发:三种实现定时器的方法
- Android之三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- Android三种实现定时器的方法
- PowerDesigner将PDM导出生成WORD文档
- vs2008 多人同时开发项目时的代码注释规范格式
- suse系统FTP问题
- 加入视觉:将计算机改造为机器人
- java值传递
- Android开发之实现定时器的三种方法
- 大端模式与小端模式、网络字节顺序与主机字节顺序
- 使用svn命令统计两次上线之间的代码行数,以及不同作者的代码行数
- Linux C输入输出函数
- Viewpager滑动
- 一个简单提取邮件地址的方法
- *.axf: Error: L6967E: Entry point (0x08000000) points to a Thumb instruction but is not a valid T
- DWR高级主题之反向Ajax(DWR3介绍)
- 【COCOS2DX-游戏开发之二九】CCEditBox的各种问题