单个服务的多个实例

时间:2015-10-14 14:37:54

标签: android service android-service

假设我已从活动启动服务并在后台运行,如果我再次启动服务,那么服务会重启还是会有多个实例?

1 个答案:

答案 0 :(得分:1)

请参阅有关服务生命周期的the docs

  

系统可以运行服务有两个原因。如果有人调用Context.startService(),那么系统将检索服务(创建它并在需要时调用其onCreate()方法),然后使用客户端提供的参数调用其onStartCommand(Intent,int,int)方法。此服务将在此时继续运行,直到调用Context.stopService()或stopSelf()。

     

请注意,对Context.startService()的多次调用不会嵌套(尽管它们会导致多次对onStartCommand()的相应调用),因此无论启动多少次,服务都会在Context.stopService中停止( )或者调用stopSelf();但是,服务可以使用它们的stopSelf(int)方法来确保在处理完启动意图之前不会停止服务。

基本上,它创建一次(调用onCreate),对于每次后续调用startService,再次调用方法onStartCommand

服务器将决定是否自己调用onCreate,具体取决于它是否已在运行。

  

如果我再次启动服务,那么服务将重启

它不会重新创建或重新初始化,但onStartCommand中的代码会再次运行,因此请务必记住,您不会在那里执行任何不能多次执行的操作。在onCreate

中执行此操作