猿问

服务与内容服务

服务与内容服务

有谁能给我举个例子,说明可以用IntentService不能用Service(反之亦然)?

我也相信IntentService在不同的线程中运行,而Service不会的。因此,据我所见,在自己的线程中启动服务就像启动IntentService..不是吗?

如果有人能帮我解决这两个问题,我将不胜感激。


犯罪嫌疑人X
浏览 571回答 3
3回答

慕尼黑的夜晚无繁华

Tejas Lagvankar写了一个很好的岗关于这个话题。下面是Service和IntentService之间的一些关键区别。什么时候使用?这个服务可以在没有UI的任务中使用,但不应该太长。如果需要执行长任务,则必须在服务中使用线程。这个触角服务可用于长任务,通常不与主线程通信。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(意图触发的任务)。怎么触发?这个服务由调用方法触发。startService().这个触角服务使用意图触发,则生成新的辅助线程和方法。onHandleIntent()在这个线程上调用。触发自这个服务和触角服务可以从任何线程、活动或其他应用程序组件触发。跑上这个服务在后台运行,但它运行在应用程序的主线程上。这个触角服务在单独的工作线程上运行。限制/缺点这个服务可能会阻塞应用程序的主线程。这个触角服务无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列并按顺序执行。什么时候停下来?如果您实现了服务,您有责任在服务工作完成时停止服务,方法是调用stopSelf()或stopService()..(如果只想提供绑定,则不需要实现此方法)。这个触角服务在处理完所有启动请求后停止服务,因此您不必调用stopSelf().

qq_笑_17

服务由startService()从任何Thread跑上Main Thread可以阻塞主(UI)线程。始终将服务中的线程用于长任务。一旦任务完成,我们就有责任通过调用停止服务。stopSelf()或stopService()触角服务它执行长任务,通常不与主线程通信,如果需要通信,则由Handler或BroadcastReceiver调用通道Intent触发自Main Thread在单独的线程上运行。无法并行运行任务,多个意图在同一个工作线程上排队。
随时随地看视频慕课网APP
我要回答