我正在解析来自设备的所有短信并从中提取单词。为此,我首先使用了Service
,但问题在于它使应用程序变慢或者有时我收到应用程序运行时间更长的通知。
除此之外,我使用了IntentService
。但意图服务的问题是每当我停止应用程序时,我都看不到我的服务了。除此之外,我还必须使用Alarm Manager来安排事情。
我打算用SyncAdapter
来做这两件事,但我不认为这是一个很好的选择。如果有更好的可能,这将是非常有用的。
后台任务可能需要5-10分钟才能完成,我计划每12小时运行一次。虽然我不会再次解析旧邮件。所以第一次就不会花更长的时间。即使应用程序关闭,任务也不应该结束。
答案 0 :(得分:4)
基本上IntentService
适用于与应用程序生命周期无关的后台任务。
但意图服务的问题是每当我停止时 应用程序,我无法再看到我的服务了。
您可以使用以下方式从意向服务向UI发送更新:
LocalBroadcastManager
:how to use LocalBroadcastManager?
Handler
:How to Collect info from IntentService and Update Android UI
此外,您可能希望观看此视频:The Zen of IntentService. (Android Performance Patterns)
修改强>:
忘记使用IntentService
,它会在应用程序停止时停止,因为它在与应用程序相同的进程上运行。
由于您希望服务每12小时作为一项工作,您可以使用“预定服务”。 您可以使用JobScheduler或Firebase JobDispatcher API