我正在构建一个具有服务的应用程序。我知道所有应用程序组件都运行在同一个 UI 进程中,至少您在清单中指定了它。因此,为了避免 ANR 的消息,我有三种方法。
在清单中指定服务以在单独的进程中运行,例如 android:process=":remote" 但我读过一些 StackOverflow 的帖子
说这不是一个好主意,因为它消耗大量电池和 CPU 处理。我真的很尊重,因为这些帖子来自受信任的人。使用 IntentService。这可能是一个很好的出路。但即使活动不可见,我也需要运行我的服务。因为我需要该服务不断检查来自其他用户的新消息的 Web 服务并通过通知通知。可以使用 IntentService 吗?这是一个优雅的解决方案。
使用本地服务。只需从清单文件中删除 android:process=":remote" 属性。但我得到一些 ...OnMainThreadException 错误。这意味着我需要创建一个特殊的线程来执行那些长时间运行的操作或使用 AsyncTask,
也许还有其他方法可以做到这一点。请让我知道,如何在服务上执行长时间运行的操作。真的是势在必行。
谢谢。