2012-01-12 51 views
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应该理想地用于基于某个系统警报来执行单个任务。有什么我失踪或一些替代品来实现此功能。

回答

0

您可以使用AlarmManager - 它有机会向上软弱和设备重复运行一些任务。

我不知道到底,但假设,当用户关闭屏幕上的所有任务暂停,不能做任何代码,而设备的睡眠。

相关问题