3
我已经使用定时器&的TimerTask与伪代码: -安排保证在接近预定时间在Android上运行的任务的最佳方式是什么?
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应该理想地用于基于某个系统警报来执行单个任务。有什么我失踪或一些替代品来实现此功能。