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/