【发布时间】:2014-01-23 10:29:08
【问题描述】:
我们的应用程序有一个服务,它启动一个计时器,每 4 小时安排一次任务。
但是手机经常在屏幕关闭时进入睡眠状态。
我不希望在手机处于睡眠状态时运行任务。
但我希望如果手机睡眠时间超过 4 小时,它可以立即运行。
TimerTask task = new TimerTask()
{
@Override
public void run() {
//do something
}
};
new Timer().schedule(task, 0, 4*60*60*1000);//period=4 hours;
我做了一些测试,显示手机是否已经睡眠超过 4 小时,当它醒来时,计时器的周期没有加上过去 5 个睡眠小时,它不能立即运行任务。
它的周期时间只是计算手机的唤醒时间。
我研究过Timer.java,知道定时器的延迟机制是使用线程wait(),就是这个原因。
如何制作包含手机休眠时间的循环时间任务?
我认为没有必要使用AlarmManager,因为手机休眠时不需要运行任务。
提前致谢。
【问题讨论】:
-
可以使用powermanager唤醒锁developer.android.com/reference/android/os/…