安卓后台线程 : Difference between launching from an Activity and from a Service

标签 android

Activity 和从 Activity 启动的 Service 运行后台线程有什么不同吗? 添加:后台线程不与 UI 交互。

我目前有一些从 Activity 启动的后台线程。大多数是通过 AsyncTask,一个是通过我自己的 ExecutorService。我想知道重构代码以将它们移动到 ServiceIntentService 是否有重大好处。

最佳答案

您似乎对 Activity 和服务的定义感到困惑。说清楚:

  • Activity 是根据 Activity 生命周期状态机运行的事物。各个处理程序中的代码与附加到 UI 的事件循环交互。
  • 服务 是根据服务生命周期状态机运行的事物。各个生命周期处理程序中的代码执行操作来处理 Intents 等...,但通过 UI 与用户交互。

然而,这两者都在应用程序的“主线程”上运行。 Activity 或 Service(或 Broadcast Receiver、Content provider 等)本身不是线程。查看文档,您会发现 Activity 和 Service 类实际上并没有形成线程。相反,它们是将在 Android 框架内运行的 Hook ,框架将在适当的时候在应用的“主”线程上调用它们。

您可以为应用程序创建单独的线程,或使用 AsyncTask 来完成工作并将其轻松发布到 UI 线程(使用服务不太容易实现) ).

关于安卓后台线程 : Difference between launching from an Activity and from a Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970666/

相关文章:

android - 如何设置焦点在按钮上?

android - 设置 Gradle 以在 Android Studio 中运行 Java 可执行文件

java - Android System.err : javax.net.ssl.SSLHandshakeException:握手失败

java - android listview 也在迭代页脚菜单

android - 媒体控制通知在 Android O 上发出警报

android - Butterknife fragment 注入(inject) View 不起作用?

Android + JSON 防止反编译?

android - 使用分页架构组件调试分页

android - 将多个 XML 文件合并为一个文件效率更高吗?

java - Dropbox 数据存储 API : Reliably determining if the user is authenticated