你能帮我理解 IntentService和 Service的区别吗?
IntentService
Service
简而言之,服务是开发人员设置后台操作的更广泛的实现,而意图服务对于“启动和忘记”操作非常有用,它负责后台线程的创建和清理。
来自文件:
服务 服务是一个应用程序组件,表示应用程序希望在不与用户交互的情况下执行长期运行的操作,或者为其他应用程序提供可使用的功能。
意向服务 服务是随需应变的意图服务 处理异步请求的服务(表示为意图)的基类。客户机通过 startService(Intent)调用发送请求; 服务根据需要启动,依次使用工作线程处理每个意图,并在工作用完时停止自身。
startService(Intent)
请参考此文档 -http://developer.android.com/reference/android/app/IntentService.html
Service: 它在系统的后台运行。例如,
背景制作过程: 厨师煲汤
意向服务:-这是连续服务。.(例如,你同时向服务员订购多种食物,但服务员会一个接一个地送货上门,而不会同时送货上门。)。
Service实际上在应用程序的同一个线程中运行; 当您扩展 Service 时,必须手动产生新的线程来运行 CPU 阻塞操作。
对
IntentService是 Service的一个子类,它产生一个线程从那里做后台工作(不需要创建一个新的线程来做 CPU 阻塞操作)。
Service是服务实现的基类。Service运行在应用程序的主线程上,这可能会降低应用程序的性能。因此,可以使用服务的直接子类 IntentService来简化工作。
IntentService用于在后台执行某项任务。一旦完成,IntentService的实例将自动终止。使用它的例子是从 Internet 下载某个资源。
差异
onHandleIntent()
stopSelf()
null
onBind()
onStartCommand()
简而言之,使用 IntentService只需要做两件事。首先,实现构造函数。其次,实现 onHandleIntent()。对于其他回调方法,需要调用 super,以便能够正确地跟踪它。
Service: 在主线程中工作,所以它会在几秒钟后导致 ANR(Android 没有响应)。
IntentService: Service与另一个后台线程分开工作,在不与主线程交互的情况下执行某些操作。
意向服务是服务的产物
意向服务: 如果你想在打开应用程序的时候下载一大堆图片。这是一个一次性的过程,一旦所有东西都下载完毕,就可以自动清理。
服务: 一个服务,将不断被用来通信之间的应用程序和后端的 Web API 调用。即使它已经完成了当前的任务,您仍然希望它在几分钟之后出现,以便进行更多的交流
服务
onStartService()
main(UI
意向服务
关于这个话题,请看 Tejas Lagvankar 的 邮寄。 下面是服务和意图服务以及其他组件之间的一些关键区别。