目录
网上搜索到的延迟执行
今天在敲代码的过程中,有个需求是延迟执行某方法。
整理收集了三种方法,自己用的是第三种。
第一种线程休眠:
new Thread() {
@Override
public void run() {
super.run();
Thread.sleep(3000);
}
}.start();
第二种使用TimerTask实现延迟操作
TimerTask task = new TimerTask() {
@Override
public void run() {
}
};
Timer timer = new Timer();
timer.schedule(task, 3000);
第三种使用Handler的postDelayed方法实现延迟操作
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
}
}, 3000);
postDelayed 源码
public final boolean postDelayed(Runnable r, long delayMillis)
{
return sendMessageDelayed(getPostMessage(r), delayMillis);
}
public final boolean sendMessageDelayed(Message msg, long delayMillis)
{
if (delayMillis < 0) {
delayMillis = 0;
}
return sendMessageAtTime(msg, SystemClock.uptimeMillis() + delayMillis);
}
休眠影响
Thread.sleep、TimerTask和handler.postDelayed 都是依赖 uptimeMillis()
所以锁屏休眠时的时间时不计的。