在Android中执行多个服务

时间:2014-05-30 11:56:20

标签: android service

我在一次访谈中遇到过这个问题。

如果我们在之前的服务未关闭前多次启动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);
    }

在第一次服务未完成之前启动此服务

2 个答案:

答案 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