处理程序postDelayed()在很长一段时间后停止工作

时间:2012-08-13 11:08:30

标签: android handler

在我的Android应用程序中,我正在运行一个在前台启动的远程服务

startForeground(1, notification)

这样它就不会被杀死。在此服务中,允许任务每15分钟运行一次并重复执行。

handler.post(scheduledTask);
    class ScheduledTask implements Runnable{

        @Override
        public void run() {
            // Do the task
            // Repeat the task after the interval
            handler.postDelayed(this,INTERVAL);
        }
    }

我保留了这个应用程序一天。但是在午夜之后,它停止了大约5-6个小时的工作,然后在我恢复应用程序时提前完成,它继续。

有人能告诉我可能导致这个问题的原因吗?我在Galaxy Note中对此进行了测试。

1 个答案:

答案 0 :(得分:1)

比postDelayed更好地使用AlarmManager。我现在无法发布代码,但我有相同的需求,并且证明AlarmManager比postDelayed好得多。

您需要某种警报接收器(例如BroadcastReceiver),每次发生警报事件(意图)时都会启动您的服务。