android - 长时间运行的后台任务,Android

标签 android service

我正在解析设备中的所有短信并从中提取单词。为此,我首先使用 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 小时运行一次,因此您可以使用“预定服务”。 您可以使用JobSchedulerFirebase JobDispatcher API

关于android - 长时间运行的后台任务,Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44114517/

相关文章:

java - Spring Boot 中通过构造函数表达的不满足的依赖关系

java - fragment 过渡?

java - 在android中的远程数据库中输入或更新后通知应用程序

android - Android定时后台任务最佳实践

android - 带有 ImageButton 和 TextField 的 RelativeLayout 上的 setOnClickListener

c# - 在 Windows 服务器上安装 C# 服务(拒绝访问)

java - 将 CameraBridgeViewBase 作为服务运行以使用 OpenCV 在后台进行运动检测

android - 发布带广告和不带广告的安卓应用

android - 从 3.4.3 更新到 4.1.1 后无法检测到 OpenCV 库

android - 与对话框中的 TextView 关联的复制/粘贴操作栏上未显示的按钮