Android 定时任务或间隔定时任务
1方式:使用Handler方式
注意处理 手机灭屏以及CPU进入睡眠状态的处理,当手机进入前两者状态后,handler可能会停止工作,java的提供的TimerTask 也会有同样的问题。
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
// 在handler内部使用延迟消息实现定时器
handler.postDelayed(this,5000);//每隔5s执行
}
};
handler.postDelayed(runnable, 5000);//在外部首次启动handler延时任务,2方式:使用AlarmManager 类来实现的(适合长时间的定时任务)
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
接下来调用 AlarmManager 的 set()方法就可以设置一个定时任务了,比如说想要设定一 个任务在 10 秒钟后执行,就可以写成:
long mTime = SystemClock.elapsedRealtime() + 10 * 1000;
manager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, mTime , pendingIntent);
高版本的android可能在CPU进入休眠后,会造成定时任务执行不准时, 使用 AlarmManager 的 setExact()方法来替代 set()方法,就可以保证任务准时执行了。
3方式 使用CountDownTimer 执行间隔任务(适合已知任务的时间总长,或是一段时间内要间隔执行几次)
private class CountDown extends CountDownTimer {
public CountDown() {
//第一个参数表示任务的总时长
//第二参参数表示总长时间分几次执行
super(timeout,timeout);
}
@Override
public void onFinish() {
// TODO Auto-generated method stub
//时间结束时会触发的方法
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
//间隔执行触发的方法
}
}版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。







评论