2017-09-30 75 views
3

最近,我正在研究一个需要在特定时间每天运行一项服务的应用程序。Android Studio - “AlarmManager”的操作

为此,我使用AlarmManager。

我的问题是:在激活AlarmManager(从服务)后,我可以销毁服务,并且AlarmManager仍然会及时给我打电话?

如果没有,有没有办法在一定的时间向我发送BroadcastRecerver,而无需在OS中始终运行Service?

将不胜感激帮助

回答

2

简短的回答你的问题:服务仍然可以从报警经理随时报警接收器能够运行开始。漫长的回答:通常尝试使用作业调度程序是很好的做法。他们都可以决定更好的运行时间,同时确保您拥有必要的资源以成功运行,例如网络或高电池等其他标准。

报警管理器在牛轧糖之前只有合理的可靠性。很久以前,开发人员应该停止使用它,并开始使用作业调度程序来处理大多数用例。他们的目的是取代警报设置和接收器,并允许手机通过将手机处于打盹模式较长时间并唤醒并一次完成多项任务来节省更多电池。

即使您的警报管理器在您的特定手机上工作,谷歌在每个操作系统版本上的可靠性也越来越差。有一些非常特殊的情况,告警仍然是一种可行的方式,但除非您肯定会遇到其中一种情况,可尝试为所有运行棒棒糖和以后版本的设备使用作业调度程序。您仍然可以可靠地使用警报管理器进行kitkat及更早版本的作业调度程序不存在的情况。有关详细信息:https://developer.android.com/training/monitoring-device-state/doze-standby.html

在这两种情况下,我认为你需要监听的手机开机,以便您可以注册警报/作业调度: https://developer.android.com/training/scheduling/alarms.html

作业调度信息: https://developer.android.com/topic/performance/scheduling.html

对于可靠性问题:Android AlarmManager not working on some devices when the app is closed


+0

感谢您的回答和链接 – Elyash