2015-10-14 186 views
0

假设我已经从一个活动开始一个服务,并且它在后台运行,并且如果我再次启动该服务,那么该服务是否会重新启动或者它是否会有多个实例?单个服务的多个实例

+3

没有一个,'Service'是一个singleton,'onStartCommand'会再次被调用 – pskink

回答

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中这样做。

+0

Tim谢谢你的回答.....虚拟大拇指向上 –