Android服务实例是否重复使用?

时间:2016-04-07 15:24:19

标签: android android-service

每次触发服务时是否创建了Service的新实例,或重新使用了实例?例如。多次调用:

context.startService(new Intent(context, MyService.class));

The docs意味着可以重复使用服务类:

  

如果有人拨打Context.startService(),系统将检索该服务(如果需要,可以创建并调用其onCreate()方法)

但是,我无法直接在任何地方找到此问题。

1 个答案:

答案 0 :(得分:3)

通过startService()启动服务后,系统会认为该服务正在运行。它一直处于该状态,直到:

  • 调用stopService()
  • 服务电话stopSelf()
  • 该过程终止(例如,设置中的强制停止)

在运行时,对同一服务类的后续startService()调用将转到同一个实例。

请记住,您使用的Service子类可能会调用stopSelf()。例如,IntentService调用stopSelf(),如果在调用onHandleIntent()之后,该服务没有更多工作要做(即,没有其他人调用startService()来发送临时的新命令。)