您的位置:首页 > 移动开发 > Android开发

Android平台上常用定时器

2016-06-02 09:18 375 查看

Android平台定时器有两个:

java源生的Timer

Android新引入AlarmManager

Timer:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Timer timer = new Timer();
timer.schedule(new MyTimerTask(), 2000);
}

static class MyTimerTask extends TimerTask {

@Override
public void run() {

/* */
}
}
Timer实际上就是封装了一个Thread、一个TimerTask队列、这个TimerTask按照一定的方式排队执行。但是,如果此时cpu进入了休眠状态,这个Thread就会因为失去了cpu而阻塞,导致我们定时任务失败。

比如:我们设置一个任务5分钟后执行,可手机不到一分钟就能锁屏进入休眠了,这时候我们这个任务就会执行失败。

AlarmManager:

AlarmManager是Android用来管理时钟的类,可以在手机休眠时候正常运行,到达预设时间时,唤醒cpu来执行任务。所以,如果我们用AlarmManager来定时执行任务,cpu可以正常休眠,只有在需要运行任务时醒来一段很短的时间。

如何选择:

短时间的任务,可以通过Timer来实现,比如延时几百毫秒,几秒后执行某个任务。

对于长时间的定时任务,考虑到手机休眠导致的任务失败,改用AlarmManager来实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息