Android:调度应用程序以继续执行

Android:调度应用程序以继续执行,android,scheduled-tasks,alarmmanager,timertask,scheduledexecutorservice,Android,Scheduled Tasks,Alarmmanager,Timertask,Scheduledexecutorservice,我经历了各种讨论,并尝试了多次迭代,以使我的应用程序按固定的时间间隔重复运行。我也取得了成功,但我开始了解事情是如何运作的 我尝试了ScheduledExecutorService和TimerTask的实现,但两者都没有在正确的时间间隔触发我的任务。但在AlarmManager中获得了成功 请将我引向正确的方向,以了解为什么计时在ScheduledExecutorService和TimerTask中不起作用 应用程序需要定期执行任务。比如说,我的任务大约需要5分钟才能完成,我想让它保持计划,以便

我经历了各种讨论,并尝试了多次迭代,以使我的应用程序按固定的时间间隔重复运行。我也取得了成功,但我开始了解事情是如何运作的

我尝试了ScheduledExecutorService和TimerTask的实现,但两者都没有在正确的时间间隔触发我的任务。但在AlarmManager中获得了成功

请将我引向正确的方向,以了解为什么计时在ScheduledExecutorService和TimerTask中不起作用

应用程序需要定期执行任务。比如说,我的任务大约需要5分钟才能完成,我想让它保持计划,以便每30分钟运行一次。当我使用ScheduledExecutorService或TimerTask构建应用程序时,我发现它不会在30分钟内触发任务,而是在1小时甚至更长时间内触发。到目前为止,使用Alarm Manager,它在30分钟左右被触发时似乎工作正常(仍然可以发现轻微的变化,但比其他两个更好)

当我使用ScheduledExecutorService或TimerTask构建应用程序时,我发现它不会在30分钟内触发任务,而是在1小时甚至更长时间内触发

更重要的是,一旦进程终止,它就不会触发,这可能发生在任何时候,从用户的角度来看,应该很快发生,以便为其他应用程序释放RAM

您的触发延迟可能是由于设备进入睡眠状态。您的解决方案不仅会占用用户的RAM,而且还需要您防止设备进入睡眠状态,这对电池寿命非常不利


AlarmManager
是一个更合适的解决方案,因为它不需要您保持服务运行或拥有一个流程。请确保使用
WakefulBroadcastReceiver
作为您对
\u WAKEUP
事件的响应方式,因为设备会想重新进入睡眠状态。

请完整准确地解释“工作不正常”的含义。@Commonware已详细更新了问题。请看一看,太棒了。你的回答帮助我得到了我想要的,甚至让我对安卓系统有了更多的了解。我刚接触安卓系统,每一个技术术语都鼓励我探索更多。:)