3 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
什么时候使用?
这个 服务可以在没有UI的任务中使用,但不应该太长。如果需要执行长任务,则必须在服务中使用线程。 这个 触角服务可用于长任务,通常不与主线程通信。如果需要通信,可以使用主线程处理程序或广播意图。另一种使用情况是需要回调(意图触发的任务)。
怎么触发?
这个 服务由调用方法触发。 startService()
.这个 触角服务使用意图触发,则生成新的辅助线程和方法。 onHandleIntent()
在这个线程上调用。
触发自
这个 服务
和 触角服务
可以从任何线程、活动或其他应用程序组件触发。
跑上
这个 服务在后台运行,但它运行在应用程序的主线程上。 这个 触角服务在单独的工作线程上运行。
限制/缺点
这个 服务可能会阻塞应用程序的主线程。 这个 触角服务无法并行运行任务。因此,所有连续的意图都将进入工作线程的消息队列并按顺序执行。
什么时候停下来?
如果您实现了 服务,您有责任在服务工作完成时停止服务,方法是调用 stopSelf()
或 stopService()
..(如果只想提供绑定,则不需要实现此方法)。 这个 触角服务在处理完所有启动请求后停止服务,因此您不必调用 stopSelf()
.
qq_笑_17
TA贡献1818条经验 获得超7个赞
服务
由 startService()
从任何 Thread
跑上 Main Thread
可以阻塞主(UI)线程。始终将服务中的线程用于长任务。 一旦任务完成,我们就有责任通过调用停止服务。 stopSelf()
或 stopService()
触角服务
它执行长任务,通常不与主线程通信,如果需要通信,则由 Handler
或 BroadcastReceiver
调用通道 Intent
触发自 Main Thread
在单独的线程上运行。 无法并行运行任务,多个意图在同一个工作线程上排队。
添加回答
举报
0/150
提交
取消