android - 为什么要使用 Service 进行后台任务?

标签 android

Activity 可以使用 AsyncTask 或 Handler 框架进行后台工作。即使在用户离开启动它们的 Activity 并且调用了该 Activity 的 onDestroy 之后,两者都将继续工作。换句话说,即使在其 GUI 关闭后,Activity 也完全有能力进行后台工作。

在这种情况下,使用 Service 进行后台工作似乎是多余的。服务能带来哪些 Activity 无法做到的事情?谢谢。

最佳答案

什么是服务?

关于 Service 类的大多数混淆实际上围绕着它不是什么:

  • 服务不是一个单独的进程。 Service 对象本身并不意味着它在自己的进程中运行;除非另有说明,否则它与它所属的应用程序在同一进程中运行。
  • 服务不是线程。它本身并不是一种脱离主线程工作的方法(以避免应用程序无响应错误)。

因此Service本身其实很简单,主要提供两个功能:

  • 应用程序告诉系统它想在后台做的事情的工具(即使用户没有直接与应用程序交互)。这对应于对 Context.startService() 的调用,它要求系统为服务安排工作,一直运行到服务或其他人明确停止它为止。
  • 应用程序向其他应用程序公开其某些功能的工具。这对应于对 Context.bindService() 的调用,它允许与服务建立长期连接以便与其交互。

Read the rest of the documentation for more info

因此,服务的一个实例将是您希望以设定的时间间隔自行发生的事情,而无需启动 Activity 或其他任何东西来“启动”它。例如,SMSBackup只是一项在后台运行的服务,每隔 X 分钟轮询一次您的 SMS 消息并将它们复制到 gmail 标签中,作为“备份”服务。

关于android - 为什么要使用 Service 进行后台任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4078767/

相关文章:

Android 使用卡住标题和列为日历事件创建布局

android - SQLiteException 无法插入行

java.lang.RuntimeException : Only one Looper may be created per thread

android - OnCreate() 与 OnStart()

android 2.2 谷歌地图错误

android - 使用自定义属性创建默认样式

android - 如何使用 Recycle.scrollTo?

android - 如何在 WebView 下方放置广告

android - Travis CI - Android 项目构建失败

android - 启用/禁用对话框按钮android