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