【问题标题】:android how to deal with android timer when phone goes to sleepandroid如何在手机进入睡眠状态时处理android计时器
【发布时间】: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,因为手机休眠时不需要运行任务。
提前致谢。

【问题讨论】:

标签: android timer task


【解决方案1】:

您需要使用 AlarmManager 而不设置唤醒选项,而不是使用 Timer。如果你这样做,闹钟将在 4 小时后下次唤醒手机时触发..

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    相关资源
    最近更新 更多