有时候想要执行定时任务,会用到 Handler + Thread + Runnable 的结构:
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message message) {
//在里面执行操作
}
};
new Thread(new MyTask()).start();
class MyTask implements Runnable {
@Override
public void run() {
Message message = new Message();
mHandler.sendMessage(message);
try {
Thread.sleep(5000);
} catch(InterruptedException ie) {
}
}
}
设置为每5秒发送Message,执行一次操作。实际情况下有时两次操作间隙没有5秒,原因是当 Thread.sleep() 抛出异常后,就不会休眠五秒钟了。
修改办法是:class MyTask implements Runnable {
@Override
public void run() {
Message message = new Message();
mHandler.sendMessage(message);
while(true) {
try {
Thread.sleep(5000);
break;
} catch(InterruptedException ie) {}
}
}
}