Android复制服务

Android复制服务,android,android-service,Android,Android Service,我想知道当使用同一个类时,是否可以创建两次(或更多)服务(myService.class)。例如,如果第一次启动是在应用程序上(这意味着它在后台继续运行),而其他启动则发生在接收到的广播上 startService(new Intent(this, myService.class)); 或者,如果服务当前正在运行,则其他服务未初始化 如前所述,服务只有一个实例。正如文档中所述,每次调用startService都会调用相应的服务实例onStartCommand。但是不创建新实例。我找到了一个简

我想知道当使用同一个类时,是否可以创建两次(或更多)服务(myService.class)。例如,如果第一次启动是在应用程序上(这意味着它在后台继续运行),而其他启动则发生在接收到的广播上

 startService(new Intent(this, myService.class));

或者,如果服务当前正在运行,则其他服务未初始化

如前所述,服务只有一个实例。正如文档中所述,每次调用startService都会调用相应的服务实例onStartCommand。但是不创建新实例。

我找到了一个简单的解决方案

每当调用
startService()
时,也会调用
onCreate()
onStartCommand()
。但是变量仍然是相同的,不会再次初始化

因此,要解决这个问题,请创建一个私有字段,如:

private var isRunning = false
或:

然后,在
onCreate()
中:


如果我错了,请纠正我-如果它在不同的上下文上,这是可能的,但是如果我使用相同的上下文(例如getApplicationContext()),那么只创建一个实例,对吗?不,好的,这是每个应用程序,也就是每个包
private boolean isRunning = false;
    if (!isRunning) {
        Log.i("ServiceStarter", "On start called")
        isRunning = true
        // do your work here
    }