我正在解析设备中的所有短信并从中提取单词。为此,我首先使用 Service
,但它的问题是它使应用程序变慢,或者有时我收到应用程序运行时间更长的通知。
作为替代方案,我使用了 IntentService。但 Intent 服务的问题是,每当我停止应用程序时,我都看不到我的服务在运行。除此之外,我还必须使用警报管理器来安排事情。
我计划使用 SyncAdapter 来完成这两件事,但我认为使用它不是一个好的选择。如果有更好的方法可以做到这一点,那将非常有帮助。
后台任务可能需要长达 5-10 分钟才能完成,我计划每 12 小时运行一次。虽然我不会再解析旧消息。所以第一次之后就不会花更长的时间了。即使应用程序关闭,任务也不应该结束。
最佳答案
基本上,IntentService
适用于与应用程序生命周期无关的后台任务。
But problem with intent service is that whenever I stopped the application, I couldn't see my service running anymore.
您可以使用以下方法从 Intent 服务向 UI 发送更新:
LocalBroadcastManager
:how to use LocalBroadcastManager?
处理程序
:How to Collect info from IntentService and Update Android UI
您可能还想观看此视频:The Zen of IntentService. (Android Performance Patterns)
编辑:
忘记使用 IntentService 吧,它会随着应用程序停止而停止,因为它与应用程序运行在同一进程上。
由于您希望您的服务作为一项作业每 12 小时运行一次,因此您可以使用“预定服务”。 您可以使用JobScheduler或Firebase JobDispatcher API
关于android - 长时间运行的后台任务,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114517/