Java Android服务在调用活动被终止之前不会停止

Java Android服务在调用活动被终止之前不会停止,java,android,Java,Android,我启动一个返回start\u STICKY的服务 public void onToggleClicked(View view){ boolean on = ((Switch) view).isChecked(); boolean serviceRunning = isMyServiceRunning(MainService.class); if(on && !serviceRunning){ startService(new Intent(

我启动一个返回start\u STICKY的服务

public void onToggleClicked(View view){
    boolean on = ((Switch) view).isChecked();
    boolean serviceRunning = isMyServiceRunning(MainService.class);
    if(on && !serviceRunning){
        startService(new Intent("com.banda.MainService"));
    }else if(!on && serviceRunning){
        stopGlyphService();
    }
}

private boolean isMyServiceRunning(Class<?> serviceClass) {
    ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
        if (serviceClass.getName().equals(service.service.getClassName())) {
            return true;
        }
    }
    return false;
}
调用了服务上的onDestroy(),但该服务仍在运行。下次单击切换按钮时,isMyServiceRunning()返回false,并启动该服务的另一个实例

当我关闭主活动并通过将应用程序从应用程序托盘中拉出来终止应用程序时,调用其onDestroy()的服务最终停止工作

MainService中的onDestroy():

@Override
public void onDestroy(){
    super.onDestroy();
    System.out.println("Service stopping");
    this.stopSelf();
}
简言之:

  • 我需要启动一个服务,在主活动结束后继续运行 杀死(开始粘滞)

  • 我需要能够在关闭主活动后停止服务 然后再次打开它并终止服务

  • 我需要停止服务,即使主要活动没有停止 关闭,因此我不会同时运行多个实例


谢谢。

在stopGlyphService()-Method中,您必须停止运行意图的意图,而不是创建新的意图。但是会调用服务的onDestroy(),并且在活动终止时服务会停止。此外,我还需要能够停止主活动并再次启动它,从而丢失启动服务的意图实例。我还尝试序列化意图并将其反序列化,以便在stopService()中使用
@Override
public void onDestroy(){
    super.onDestroy();
    System.out.println("Service stopping");
    this.stopSelf();
}