安排在Android中接近预定时间运行的任务的最佳方法是什么?

时间:2012-01-12 06:19:40

标签: android timer delay repeat timertask

我一直在使用Timer&具有伪代码的TimerTask: -

 samplingTask = new TimerTask() {

   public void run() {
     collectSample();
   }

 };

 timer.schedule(samplingTask, 60*1000, 60*1000); //1 min

这个应用程序是一个长期运行的应用程序(例如说15分钟没有唤醒锁,屏幕关闭)。在安排此任务后,我锁定屏幕并且手机处于运动状态(传感器管理器已激活加速度计)。因此,理想情况下,此任务应该每分钟运行一次。但是,在日志中,我看到计划的计时器仅在第5分钟,第9分钟和第12分钟运行。

FINER: (13,Timer-0,Workout)In Timertask, nth minute=5
FINER: (13,Timer-0,Workout)In Timertask, nth minute=9
FINER: (13,Timer-0,Workout)In Timertask, nth minute=12

我的要求具有时间关键的采样,可接受的延迟范围为几秒(1-5秒)。如果设备处于睡眠模式,计时器似乎不会将其唤醒并运行计划任务。还有其他替代品。文档说明可以使用AlarmManager和Handler。我认为AlarmManager理想情况下应该用于根据某些系统警报执行单次任务。是否有我缺少的东西或实现此功能的替代方案。

1 个答案:

答案 0 :(得分:0)

您可以使用AlarmManager - 它有机会弱化设备并反复运行某些任务。

我确切地知道,但是假设当用户关闭屏幕时,所有任务都暂停,并且在设备休眠时无法执行任何代码。

相关问题