android - 在服务上执行长时间运行的操作

标签 android android-handler worker-thread

我正在构建一个具有服务的应用程序。我知道所有应用程序组件都在同一个 UI 进程中运行,至少您在 list 中指定了它。因此,为了避免 ANR 的消息,我有三种方法。

  1. 指定 list 中的服务在单独的进程中运行,例如 android:process=":remote"但我读过 StackOverflow 的一些帖子
    说这不是一个好主意,因为它消耗大量电池和CPU处理。 我真的很尊重这一点,因为这些帖子来自值得信赖的人。

  2. 使用 IntentService。这可能是一个很好的出路。但我需要运行我的服务,即使 Activity 不可见。因为我需要该服务不断检查网络服务是否有新的 来自其他用户的消息并通过通知进行通知。是否可以使用 Intent 服务?这是一个优雅的解决方案吗?

  3. 使用本地服务。只需从 list 文件中删除 android:process=":remote"属性即可。 但我收到一些 ...OnMainThreadException 错误。这意味着我需要创建一个特殊的 线程来执行那些长时间运行的操作或使用 AsyncTask,

也许还有其他方法可以做到这一点。请让我知道如何在服务上执行长时间运行的操作。确实势在必行。

谢谢。

最佳答案

Android 服务在 UI 线程中执行。因此,您应该使用 AsyncTask 或其他方式来处理网络请求的线程。

关于android - 在服务上执行长时间运行的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14760507/

相关文章:

android - 如何在android中压缩视频文件

android - 如何处理多次做同样的事情

java - 与 UI 线程通信 Android : User Inactivity

android - 如何在 Android Studio 中正确使用 postDelayed()?

javascript - HTML5 应用程序中的后台数据下载到浏览器数据库 - settimeout 与工作线程

Android:多个 Intent 服务或一个具有多个 Intent 的 Intent 服务?

android - 定义启动 Activity ?

java - 停止处理程序线程按钮

android - 最多可以创建多少个工作线程?

android - 布局重力左右