假设我已从活动启动服务并在后台运行,如果我再次启动服务,那么服务会重启还是会有多个实例?
答案 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
。