我正在寻找一个可以用IntentService完成但不能用Service完成的示例(反之亦然)?
我还认为IntentService在不同的线程中运行,而Service则不运行。因此,就我所见,在自己的线程中启动服务就像启动IntentService一样。这是正确的吗?
我正在寻找一个可以用IntentService完成但不能用Service完成的示例(反之亦然)?
我还认为IntentService在不同的线程中运行,而Service则不运行。因此,就我所见,在自己的线程中启动服务就像启动IntentService一样。这是正确的吗?
当前回答
服务和IntentService之间的主要区别如下:
服务:
1.默认情况下,服务在应用程序的主线程上运行。(这里没有默认的工作线程可用)。因此用户需要创建一个单独的线程,并在该线程中执行所需的工作。
2.一次允许多个请求。(多线程)
意向服务:
1.现在,来到IntentService,这里有一个默认的工作线程可以执行任何操作。注意-您需要实现onHandleIntent()方法,该方法接收每个启动请求的意图,在那里您可以执行后台工作。
2.但它一次只允许一个请求。
其他回答
我相信你只需在谷歌上搜索诸如“Android IntentService vs Service”之类的内容,就能找到一系列不同之处
每个示例中一个更重要的区别是IntentService在完成后会自动结束。
一些例子(很快编好)可能是:;
IntentService:如果你想在打开应用程序时下载一堆图片。这是一个一次性的过程,一旦下载完所有内容,就可以自行清理。
服务:一种服务,它将不断用于通过web API调用在应用程序和后端之间进行通信。即使它完成了当前任务,您仍然希望它在几分钟后出现,以便进行更多的交流。
服务和IntentService之间的主要区别如下:
服务:
1.默认情况下,服务在应用程序的主线程上运行。(这里没有默认的工作线程可用)。因此用户需要创建一个单独的线程,并在该线程中执行所需的工作。
2.一次允许多个请求。(多线程)
意向服务:
1.现在,来到IntentService,这里有一个默认的工作线程可以执行任何操作。注意-您需要实现onHandleIntent()方法,该方法接收每个启动请求的意图,在那里您可以执行后台工作。
2.但它一次只允许一个请求。
如果有人能向我展示一个可以用IntentService完成而不能用Service完成的事情的例子。
根据定义,这是不可能的。IntentService是服务的一个子类,用Java编写。因此,IntentService所做的任何事情,服务都可以通过包含IntentService使用的相关代码位来完成。
使用自己的线程启动服务就像启动IntentService。不是吗?
IntentService的三个主要功能是:
后台线程传递给onStartCommand()的Intent的自动排队,因此如果后台线程上的onHandleIntent()正在处理一个Intent,其他命令将排队等待一旦队列为空,通过调用stopSelf()自动关闭IntentService
所有这些都可以由服务实现,而无需扩展IntentService。
Android IntentService与服务
1.服务
使用startService()调用服务。可以从任何线程调用服务。服务在默认应用程序。因此,它可以阻止应用程序的UI。多次调用服务将创建多个实例。需要使用stopSelf()或stopService()停止服务。Android服务可以运行并行操作。
2.意向服务
IntentService是使用Intent调用的。IntentService只能从Main线程调用。IntentService创建一个单独的工作线程来运行后台操作。多次调用IntentService不会创建多个实例。IntentService在队列完成后自动停止。不需要触发stopService()或stopSelf()。在IntentService中,多个intent调用自动排队并且它们将被顺序地执行。IntentService不能像Service一样运行并行操作。
请参阅此处
服务
通过startService()调用从任何线程触发在主线程上运行可能会阻塞主(UI)线程。对于长任务,始终在服务中使用线程任务完成后,我们有责任通过调用stopSelf()或stopService()来停止服务
Intent服务
它执行长任务,通常不与主线程通信,如果需要通信,则由处理器或BroadcastReceiver完成通过Intent调用从主线程触发在单独的线程上运行无法并行运行任务,并且多个意图在同一工作线程上排队。