Android工作室-'AlarmManager'的运营

Android Studio - The operation of 'AlarmManager'

最近,我正在开发一个需要每天在特定时间 运行 服务的应用程序。

为此,我使用 AlarmManager。

我的问题是:激活AlarmManager(从Service)后,是否可以销毁Service,AlarmManager仍会及时调用我?

如果没有,有没有办法在特定时间向我发送 BroadcastRecerver,而无需在 OS 中一直 运行ning 一个服务?

非常感谢帮助

对您的问题的简短回答:仍然可以在警报接收者能够启动的任何时候从警报管理器启动服务 运行。长答案:尽管通常尝试使用作业调度程序是一种很好的做法。他们都可以决定 运行 的更好时间,同时确保您拥有成功 运行 所需的资源,例如网络或高电量等条件。

只有在牛轧糖之前,警报管理器才相当可靠。早就宣布开发人员应该停止使用它,并开始在大多数用例中使用作业调度程序。它们旨在取代警报设置和接收器,并允许 phone 通过将 phone 置于休眠模式更长时间并唤醒并同时执行多项任务来节省更多电池。

即使您让警报管理器处理您的特定 phone google 也会使每个 OS 版本的可靠性越来越低。在非常具体的情况下,警报仍然是可行的方法,但除非您确定属于其中一种情况,否则请尝试对所有设备 运行ning lollipop 及更高版本使用作业调度程序。对于不存在作业调度程序的 kitkat 和更早版本,您仍然可以可靠地使用警报管理器。更多详细信息:https://developer.android.com/training/monitoring-device-state/doze-standby.html

在任何一种情况下,我认为您需要监听 phone 的启动,以便您可以注册您的 alarm/job 调度程序: 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