I have been using Timer & TimerTask with Pseudocode:-
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,根据某些系统警报进行单一射击。 是否有东西是我所不知的,还是实现这一功能的一些替代办法。