我在一次访谈中遇到过这个问题。
如果我们在之前的服务未关闭前多次启动Service(),会发生什么?
public void start(View v)
{
Intent i = new Intent(this,MyService.class);
startService(i);
}
public void stop(View v)
{
Intent i = new Intent(this,MyService.class);
stopService(i);
}
public void startAnother1(View v)
{
Intent i = new Intent(this,MyService.class);
startService(i);
}
新服务在主Thread.But中创建并执行它将在哪里执行?它是否会等待完成第一次服务,还是会在同一主线程中单独执行并行执行?
如果我写 startAnother1 ,如下所示
public void startAnother1(View v)
{
Intent i = new Intent(this,MyAnotherService.class);
startService(i);
}
在第一次服务未完成之前启动此服务
答案 0 :(得分:0)
如果当前未运行服务,则会调用onCreate()
和onStartCommand()
。
但是如果服务还活着,那么只会调用onStartCommand()
。
答案 1 :(得分:0)
在我们之前多次启动Service()时会发生什么 服务没有关闭?
onStartCommand()
将被调用。 Service
将经历其生命周期。这意味着您将同时运行两个Services
。
新服务在主Thread.But中创建并执行 执行?它是否会等待完成第一次服务或者它 将在同一主线程中单独执行并行执行?
我想在这里你想说:“什么时候会执行?”当您致电Context.startService()
时,Android会致电onStartCommand()
(Service
已在运行,因此无需致电onCreate()
),Service
生命周期将开始。也就是说,在您致电stopSelf()
或Context.stopService()
之前,您将有两项服务在运行。默认情况下,Services
始终在用户界面Thread
上运行。如果您希望Service
实施单独运行Thread
,请使用IntentService
。