我正在寻找一个可以用IntentService完成但不能用Service完成的示例(反之亦然)?

我还认为IntentService在不同的线程中运行,而Service则不运行。因此,就我所见,在自己的线程中启动服务就像启动IntentService一样。这是正确的吗?


当前回答

我相信你只需在谷歌上搜索诸如“Android IntentService vs Service”之类的内容,就能找到一系列不同之处

每个示例中一个更重要的区别是IntentService在完成后会自动结束。

一些例子(很快编好)可能是:;

IntentService:如果你想在打开应用程序时下载一堆图片。这是一个一次性的过程,一旦下载完所有内容,就可以自行清理。

服务:一种服务,它将不断用于通过web API调用在应用程序和后端之间进行通信。即使它完成了当前任务,您仍然希望它在几分钟后出现,以便进行更多的交流。

其他回答

如果有人能给我举一个例子,说明你可以用IntentService完成,但不能用服务完成,反之亦然。

IntentService不能用于长时间侦听,就像XMPP侦听器一样,它是一个单时间操作员,完成任务并挥手告别。

此外,它只有一个线程线程,但通过一个技巧,您可以无限使用它。

Android IntentService与服务

1.服务

使用startService()调用服务。可以从任何线程调用服务。服务在默认应用程序。因此,它可以阻止应用程序的UI。多次调用服务将创建多个实例。需要使用stopSelf()或stopService()停止服务。Android服务可以运行并行操作。

2.意向服务

IntentService是使用Intent调用的。IntentService只能从Main线程调用。IntentService创建一个单独的工作线程来运行后台操作。多次调用IntentService不会创建多个实例。IntentService在队列完成后自动停止。不需要触发stopService()或stopSelf()。在IntentService中,多个intent调用自动排队并且它们将被顺序地执行。IntentService不能像Service一样运行并行操作。

请参阅此处

我相信你只需在谷歌上搜索诸如“Android IntentService vs Service”之类的内容,就能找到一系列不同之处

每个示例中一个更重要的区别是IntentService在完成后会自动结束。

一些例子(很快编好)可能是:;

IntentService:如果你想在打开应用程序时下载一堆图片。这是一个一次性的过程,一旦下载完所有内容,就可以自行清理。

服务:一种服务,它将不断用于通过web API调用在应用程序和后端之间进行通信。即使它完成了当前任务,您仍然希望它在几分钟后出现,以便进行更多的交流。

轮子

IntentService扩展了Service类,这显然意味着IntentService是为了相同的目的而故意创建的。

那么目的是什么呢?

`IntentService的目的是让我们的工作更容易运行后台任务,而不用担心

创建工作线程逐一排队处理多个请求(线程)破坏服务

所以不,Service可以完成IntentService所能完成的任何任务。如果您的需求符合上述标准,那么您不必在Service类中编写这些逻辑。所以不要再发明轮子,因为IntentService是发明的轮子。

“主要”区别

服务在UI线程上运行,而IntentService在单独的线程

你什么时候使用IntentService?

当您希望逐个执行超出“活动”范围的多个后台任务时,IntentService是完美的。

IntentService是如何从服务生成的

正常服务在UI线程上运行(默认情况下,任何Android组件类型都在UI线程中运行,例如Activity、BroadcastReceiver、ContentProvider和service)。如果你必须做一些可能需要一段时间才能完成的工作,那么你必须创建一个线程。在多个请求的情况下,您必须处理同步。IntentService提供了一些为您执行这些任务的默认实现。根据开发者页面

IntentService创建工作线程IntentService创建一个工作队列,将请求逐个发送到onHandleIntent()方法当没有工作时,IntentService调用stopSelf()方法为空的onBind()方法提供默认实现onStartCommand()的默认实现,它将Intent请求发送到WorkQueue,并最终发送到onHandleIntent()

IntentService是服务的扩展,用于简化需要在后台和单独线程中执行的任务的执行。

IntentService启动,创建一个线程并在线程中运行其任务。一旦完成,它就会清洁一切。IntentService的一个实例只能同时运行,多个调用被排队。

它的使用非常简单,对于很多用途都非常方便,例如下载东西。但它有一些限制,可能会让你想使用更基本(不简单)的服务。

例如,连接到xmpp服务器并由活动绑定的服务不能简单地使用IntentService完成。您最终将忽略或覆盖IntentService内容。