android当手机进入睡眠状态时如何处理android计时器

时间:2014-01-06 04:12:36

标签: android timer task

我们的应用程序有一项服务,启动计时器每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,因为在手机休眠时不需要运行任务 提前谢谢。

1 个答案:

答案 0 :(得分:1)

不使用Timer,您需要使用AlarmManager而不设置唤醒选项。如果这样做,下次4小时后唤醒手机时会触发警报..

查看本教程:http://www.techrepublic.com/blog/software-engineer/use-androids-alarmmanager-to-schedule-an-event/