在android上可靠的重复后台任务

时间:2009-08-31 07:52:52

标签: android

我正在尝试运行一个后台任务,它每分钟运行一次Android应用程序,但我很难确保任务实际上每分钟运行一次。我已经尝试了各种方法,从使用SystemClock.sleep()到AlarmManager(重复警报和固定警报),但似乎除非设备正在充电,任何类型的重复系统都有一个可变的重复率一旦设备是拔出。有没有办法运行稳定的一贯重复服务?

2 个答案:

答案 0 :(得分:3)

您是否已实施Timer?它对我使用它的效果非常好,但是我再也不担心它的精度了。据我所知,它可能会有所不同,但我对此表示怀疑。对我来说似乎非常一致。

编辑:我对您对此设施的负责任或不负责任的使用不承担责任;)

答案 1 :(得分:2)

如果您需要提供每分钟运行的服务,那么您有两种选择:

  • 使用AlarmManager.setRepeating(RTC_WAKEUP,...)。在这种情况下,手机会睡眠,但手机内的RTC会每分钟唤醒它以处理重复事件。这可行,但不会非常准确,因为手机唤醒后会发生很多事情,因此您的代码可能无法立即获得执行时间。

  • 从PowerManager获取WakeLock并使用您想要的任何时间来代码(Timer,Handler等)。这会强制手机永不休眠,这意味着您几乎可以在请求时自由运行代码。

这两种方法肯定会快速耗尽手机电池。通常,手机可以在唤醒之间睡4到9分钟,因此每分钟唤醒一次是的变化。