【问题标题】:What is the best way to schedule a task guaranteed to run at near-scheduled time in Android?在 Android 中安排保证在接近预定时间运行的任务的最佳方法是什么?
【发布时间】:2012-02-08 11:56:52
【问题描述】:

我一直在使用带有伪代码的 Timer 和 TimerTask:-

 samplingTask = new TimerTask() {

   public void run() {
     collectSample();
   }

 };

 timer.schedule(samplingTask, 60*1000, 60*1000); //1 min

此应用程序是一个长时间运行的应用程序(例如,15 分钟没有唤醒锁,屏幕关闭)。安排此任务后,我锁定屏幕并且手机处于运动状态(为加速度计激活传感器管理器)。因此,理想情况下,该任务应该每分钟运行一次。但是,在日志中,我看到计划的计时器仅在第 5 分钟、第 9 分钟和第 12 分钟运行。

FINER: (13,Timer-0,Workout)In Timertask, nth minute=5
FINER: (13,Timer-0,Workout)In Timertask, nth minute=9
FINER: (13,Timer-0,Workout)In Timertask, nth minute=12

我的要求是对时间要求严格的采样,可接受的延迟范围为几秒(1-5 秒)。如果设备处于睡眠模式,计时器似乎不会唤醒它并运行计划任务。有没有其他的选择。文档说可以使用 AlarmManager 和 Handler。我认为 AlarmManager 应该理想地用于基于某些系统警报执行单次任务。是否有我遗漏的东西或实现此功能的替代方法。

【问题讨论】:

    标签: android timer delay repeat timertask


    【解决方案1】:

    您可以使用AlarmManager - 它有机会削弱设备并重复运行某些任务。

    我不确切知道,但假设当用户关闭屏幕时,所有任务都暂停并且无法执行任何代码,而设备睡眠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-24
      • 1970-01-01
      • 2017-09-03
      • 2022-10-30
      • 2015-08-05
      • 2013-04-27
      相关资源
      最近更新 更多