为了账号安全,请及时绑定邮箱和手机立即绑定

服务与内容服务

服务与内容服务

服务与内容服务有谁能给我举个例子,说明可以用IntentService不能用Service(反之亦然)?我也相信IntentService在不同的线程中运行,而Service不会的。因此,据我所见,在自己的线程中启动服务就像启动IntentService..不是吗?如果有人能帮我解决这两个问题,我将不胜感激。
查看完整描述

3 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

Tejas Lagvankar写了一个很好的关于这个话题。下面是Service和IntentService之间的一些关键区别。

什么时候使用?

  • 这个服务可以在没有UI的任务中使用,但不应该太长。如果需要执行长任务,则必须在服务中使用线程。

  • 这个触角服务可用于长任务,通常不与主线程通信。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(意图触发的任务)。

怎么触发?

  • 这个服务由调用方法触发。startService().

  • 这个触角服务使用意图触发,则生成新的辅助线程和方法。onHandleIntent()在这个线程上调用。

触发自

  • 这个

    服务

    触角服务

    可以从任何线程、活动或其他应用程序组件触发。

跑上

  • 这个服务在后台运行,但它运行在应用程序的主线程上。

  • 这个触角服务在单独的工作线程上运行。

限制/缺点

  • 这个服务可能会阻塞应用程序的主线程。

  • 这个触角服务无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列并按顺序执行。

什么时候停下来?

  • 如果您实现了服务,您有责任在服务工作完成时停止服务,方法是调用stopSelf()stopService()..(如果只想提供绑定,则不需要实现此方法)。

  • 这个触角服务在处理完所有启动请求后停止服务,因此您不必调用stopSelf().


查看完整回答
反对 回复 2019-06-20
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

服务

  • startService()

  • 从任何

    Thread

  • 跑上

    Main Thread

  • 可以阻塞主(UI)线程。始终将服务中的线程用于长任务。
  • 一旦任务完成,我们就有责任通过调用停止服务。

    stopSelf()

    stopService()

触角服务

  • 它执行长任务,通常不与主线程通信,如果需要通信,则由

    Handler

    BroadcastReceiver

  • 调用通道

    Intent

  • 触发自

    Main Thread

  • 在单独的线程上运行。
  • 无法并行运行任务,多个意图在同一个工作线程上排队。


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 570 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信