Skip to content

Instantly share code, notes, and snippets.

@zhangyuchi
Created July 25, 2016 03:34
Show Gist options
  • Save zhangyuchi/7f90907face94a6027e32230a83295fe to your computer and use it in GitHub Desktop.
Save zhangyuchi/7f90907face94a6027e32230a83295fe to your computer and use it in GitHub Desktop.
android 定时器实现
//一、采用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