基于Android中实现定时器的3种解决方法

千智☆小财神

千智☆小财神

2016-02-19 09:52

下面是个简单易学的基于Android中实现定时器的3种解决方法教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!
在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);
    }
};

2. 新建一个实现Runnable接口的线程类,如下:
代码如下:

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();
            }
        }
    }
}

3. 在需要启动线程的地方加入下面语句:
代码如下:

new Thread(new MyThread()).start();

4. 启动线程后,线程每10s发送一次消息。二、采用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);
    }
};

2. 启动计时器
代码如下:

handler.postDelayed(runnable, 2000);//每两秒执行一次runnable

3. 停止计时器
代码如下:

handler.removeCallbacks(runnable);

三、采用Handler与timer及TimerTask结合的方法
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); 
    }
};

2. 初始化计时器任务
代码如下:

task = new TimerTask() { 
    @Override
    public void run() { 
        // TODO Auto-generated method stub 
        Message message = new Message(); 
        message.what = 1; 
        handler.sendMessage(message); 
    } 
};

3. 启动定时器
代码如下:

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();取消计时器的执行。
展开更多 50%)
分享

猜你喜欢

基于Android中实现定时器的3种解决方法

编程语言 网络编程
基于Android中实现定时器的3种解决方法

VC中实现毫秒定时器

编程语言 网络编程
VC中实现毫秒定时器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Android定时器实现的几种方式整理及removeCallbacks失效问题解决

编程语言 网络编程
Android定时器实现的几种方式整理及removeCallbacks失效问题解决

基于Android中手势交互的实现方法

编程语言 网络编程
基于Android中手势交互的实现方法

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

网页之定时器详解

ASP
网页之定时器详解

基于Android中的 AutoCompleteTextView实现自动填充

编程语言 网络编程
基于Android中的 AutoCompleteTextView实现自动填充

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

去掉vs2010中ipch文件和.sdf文件的解决方法

去掉vs2010中ipch文件和.sdf文件的解决方法

jsp 页面上图片分行输出小技巧

jsp 页面上图片分行输出小技巧
下拉加载更多内容 ↓