android 服务中的处理程序或警报?

handler or alarm in android service?

我有一项服务一直 运行,我需要每天从我的服务器获取信息 2 次。我必须使用延迟 12 小时的处理程序吗?还是闹钟?

你能告诉我最好的选择是什么吗?

谢谢!

警报可能更好-如果应用程序因内存而被杀死,系统中仍会出现警报。处理程序不会。处理程序最适合短时间(几秒)延迟。

AlarmManager 正是为此类任务而设计的。它允许您设置不精确的警报,Android 将这些警报与其他任务组合在一起,以最大限度地减少与唤醒设备相关的电池成本。如果您确实需要在精确的时间轮询服务器(并且不能等到用户唤醒设备),那么您可以设置一个确切的警报来唤醒设备,然后您可以使用一种方法来自动执行创建另一个计划在 12 小时后执行的确切警报。

AlarmManager 的缺点是如果设备关闭然后重新打开,服务不会自动重新启动。在这种情况下,您可以通过让 BroadcastReceiver 监听 ACTION_BOOT_COMPLETE 来解决它。 Android 5.0 还提供了 JobScheduler API,它可以通过系统重新启动来保留作业。

处理程序最适合短时间 运行 的进程。