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 //间隔执行触发的方法 } }
版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论