在调用活动被杀死之前,Android服务不会停止

时间:2015-02-18 09:21:42

标签: java android

我启动了一个返回START_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;
}

然后我打电话

private void stopGlyphService(){
    stopService(new Intent("com.banda.MainService"));
}

调用服务上的onDestroy(),但服务仍在运行。下次单击切换按钮时, isMyServiceRunning()将返回false,并启动另一个服务实例。

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

MainService中的

onDestroy():

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

简而言之:

  • 我需要启动一个在主要活动之后继续运行的服务 被杀(START_STICKY)。

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

  • 即使主要活动没有,我也需要停止服务 关闭,所以我不会立即运行多个实例。

谢谢。

0 个答案:

没有答案