Created
July 25, 2016 03:34
-
-
Save zhangyuchi/7f90907face94a6027e32230a83295fe to your computer and use it in GitHub Desktop.
android 定时器实现
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//一、采用Handle与线程的sleep(long)方法 | |
class Timer1{ | |
//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. 在需要启动线程的地方加入下面语句: | |
public void test(){ | |
new Thread(new MyThread()).start(); | |
} | |
} | |
//二、采用Handler的postDelayed(Runnable, long)方法 | |
class Timer2{ | |
//1. 定义一个Handler类 | |
public void test(){ | |
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结合的方法 | |
class Timer3{ | |
public void test(){ | |
//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); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment