Android 计划后台任务的最佳实践

Posted

技术标签:

【中文标题】Android 计划后台任务的最佳实践【英文标题】:Best practice for scehduled background task Android 【发布时间】:2015-08-17 00:54:43 【问题描述】:

我正在创建一个通知应用程序,它会在用户设置提醒通知后提醒他们。我目前的实现逻辑是:

    创建一个服务,当用户打开他们的应用程序时,该服务开始在后台运行。 在服务的 onCreate() 方法中,我正在实现一个 Timer 任务,该任务将在 5000 毫秒间隔后重复并调用一个方法,该方法将检查用户设置的所有提醒,并在当前时间设置任何提醒时通知用户。 我使用广播接收器在 Boot_Completed 事件上运行服务,以防万一用户关闭手机。

这个实现运行良好,我没有遇到任何问题,但我担心这是一个好的做法吗?请记住,每 5 秒运行和检查一次服务会消耗电池电量。此外,如果用户打开耐力模式、省电模式或任何此类模式,操作系统会终止我的服务。我可以做些什么来优先考虑我的服务不被杀死。

如果有任何其他更有效的方式来实现这类任务,我想在我的项目中实现它。

期待建议。

非常感谢。

【问题讨论】:

【参考方案1】:

最好的方法是这里提到的带有警报接收器的唤醒意图服务

https://github.com/commonsguy/cwac-wakeful

【讨论】:

【参考方案2】:

一切都好,但使用AlarmManager.setRepeating() 作为计时器。即使你的应用被杀,意图也会到来。

【讨论】:

以上是关于Android 计划后台任务的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

创建后台任务的两种代码模式

[译]图解Android应用的后台任务和提醒

与来自服务的活动(LocalService)通信 - Android 最佳实践

与服务中的活动(LocalService)进行通信 - Android最佳实践

从后台服务更新进度的最佳实践 [Android]

Centos进程作业管理与计划任务