为什么将Service用于后台任务?

Raj*_*Raj 10 android

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

在这种情况下,使用服务进行后台工作似乎是冗余.服务带来了什么活动无法做到的表格?谢谢.

Bry*_*nny 8

什么是服务?

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

  • 服务不是一个单独的过程.Service对象本身并不意味着它在自己的进程中运行; 除非另有说明,否则它与其所属的应用程序运行的过程相同.
  • 服务不是一个线程.它本身不是从主线程开始工作的手段(以避免应用程序无响应错误).

因此,服务本身实际上非常简单,提供两个主要功能:

  • 应用程序的工具,用于告诉系统它想要在后台执行的操作(即使用户没有直接与应用程序交互).这对应于对Context.startService()的调用,该调用要求系统调度服务的工作,直到服务或其他人明确停止它为止.
  • 应用程序的一种工具,可将其某些功能暴露给其他应用程序.这对应于对Context.bindService()的调用,它允许对服务进行长期连接以便与服务进行交互.

阅读其余文档以获取更多信息

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