我在寻找一个例子,说明IntentService
可以做的事情,而Service
不能做(反之亦然)?
我也相信IntentService
在不同的线程中运行,而Service
则不在.所以,在我看来,在自己的线程中启动服务就像启动IntentService
.对吗?
我在寻找一个例子,说明IntentService
可以做的事情,而Service
不能做(反之亦然)?
我也相信IntentService
在不同的线程中运行,而Service
则不在.所以,在我看来,在自己的线程中启动服务就像启动IntentService
.对吗?
Tejas Lagvankar写了一篇关于这个主题的优秀post篇文章.
When to use?
Service可以在没有UI的任务中使用,但不应该太长.如果需要执行较长的任务,则必须在服务中使用线程.
IntentService可以用于长任务,通常不需要与主线程通信.如果需要通信,可以使用主线程处理程序或广播意图.另一种使用情况是需要回调时(意图触发的任务).
How to trigger?个
Service通过调用方法startService()
触发.
IntentService使用意图触发,它产生一个新的工作线程,并在该线程上调用方法onHandleIntent()
.
Triggered From
Runs On个
Service在后台运行,但它在应用程序的主线程上运行.
IntentService在一个单独的工作线程上运行.
Limitations / Drawbacks个
Service可能会阻塞应用程序的主线程.
IntentService不能并行运行任务.因此,所有连续的意图都将进入工作线程的消息队列,并将按顺序执行.
When to stop?
如果您实现了Service,则您有责任在服务完成后通过拨打stopSelf()
或stopService()
来停止服务.(如果您只想提供绑定,则不需要实现此方法).
IntentService在处理完所有启动请求后停止服务,因此您不必拨打stopSelf()
.