📜  Android中Service和IntentService的区别

📅  最后修改于: 2021-09-11 06:11:45             🧑  作者: Mango

我们在日常生活中都会遇到各种后台运行的移动应用程序。此外,在许多应用程序中,此类任务是在不使用用户界面的情况下完成的,即任务是在上下文中完成的。例如,我们移动设备的音乐应用程序或任何其他音乐应用程序在后台运行,使您可以在使用音乐应用程序时使用任何其他应用程序。因此,使用 Service 或 IntentService 来强制执行此功能。

服务

您可能会将 Service 视为一个 Android 组件,用于在后台运行长时间运行的操作,例如在音乐应用中,我们在使用其他移动应用的同时在后台运行该应用。最好的事情是您不必为后台操作提供任何用户界面。您还可以使用 Service运行一些进程间通信 (IPC)。由于任何应用程序组件都可以启动一个 Service 并在后台运行,因此您可以借助 Service 执行多项操作。使用该服务的三种方式是:

  1. Foreground :前台服务是一种通知消费者后台正在发生的事情的服务。例如,在音乐应用程序中,用户将在计算机上看到最新歌曲作为通知。因此,在这种情况下必须显示消息。
  2. 背景:在这种情况下,消费者永远不会知道应用程序上下文中发生了什么。例如,当通过 WhatsApp 发送图像时,WhatsApp 会压缩图像文件以使其更小。此任务在后台执行,消费者不知道发生了什么。但是,Android 系统在使用 API 级别 21 或更高级别的后台服务时会施加某些限制。因此,在您使用后台服务之前,请确保您了解这些限制。
  3. Bound :当一个或多个应用程序组件使用 bindService() 方法绑定 Service 时,使用 Bound Service。如果应用程序取消绑定服务,服务将被破坏。

意向服务

IntentService 基类是 Operation。本质上,它采用了“作业队列操作”,其中 IntentService 管理客户端的按需请求(表示为 Intent)。因此,每当客户端发送请求时,服务就会启动,并在每个目的被解决后停止。客户端可以使用 Context.startService(intent) 来提交启动服务(Intent)的请求。这里生成了一个工作线程,所有请求都由工作线程处理,但一次只处理一个请求。要使用 IntentService,您必须扩展它并强制执行onHandleIntent (android.content.Intent)

Service 和 IntentService 的区别

Service

Intent Service

If the task doesn’t require any and also not a very long task you can use service. If the Background task is to be performed for a long time we can use the intent service.
we use the method onStartService()  to start the service we use the method  Context.startService(Intent) to start the intent service
Service will always run on the main thread. intent service always runs on the worker thread triggered from the main thread.
There is a chance of blocking the main thread. tasks will be performed on a queue basis i.e, first come first serve basis.
To stop service we have to use stopService() or stopSelf() No need to stop the service, it will stop automatically.
Easy to interact with the UI of the application. Difficult to interact with the UI of the application.
想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!