Android onStart()之后调用OnStop()

Android onStart()之后调用OnStop(),android,android-activity,android-lifecycle,robospice,Android,Android Activity,Android Lifecycle,Robospice,在我的应用程序中,我使用的是robospice。因此,在我的基本活动中,创建了一个spice manager: @Override protected void onStart() { super.onStart(); if(!spiceManager.isStarted()) { spiceManager.start(this); } } @Override protected void

在我的应用程序中,我使用的是robospice。因此,在我的基本活动中,创建了一个spice manager:

@Override
    protected void onStart() {
        super.onStart();
        if(!spiceManager.isStarted()) {
            spiceManager.start(this);
        }
    }

    @Override
    protected void onStop() {
        if (spiceManager.isStarted()) {
            spiceManager.shouldStop();
        }
        super.onStop();
    }

但当我启动新活动时,在新活动中,在父onStop()之前称为onStart()-因此它会断开服务。有什么办法解决吗

我不确定我是否正确理解了你的问题。但若我这样做了,我想你们会有问题,因为你们的BaseActivity onStop是在你们开始新的活动后被调用的

在这种情况下,您可以使用onResumeonPause而不是onStart和onStop

@Override
     protected void onResume() {
        super.onResume();
         if(!spiceManager.isStarted()) {
             spiceManager.start(this);
         }
     }

    @Override
    protected void onPause() {
         super.onPause();
         if (spiceManager.isStarted()) {
             spiceManager.shouldStop();
         }

     }

希望这有帮助

我不确定我是否正确理解了你的问题。但若我这样做了,我想你们会有问题,因为你们的BaseActivity onStop是在你们开始新的活动后被调用的

在这种情况下,您可以使用onResumeonPause而不是onStart和onStop

@Override
     protected void onResume() {
        super.onResume();
         if(!spiceManager.isStarted()) {
             spiceManager.start(this);
         }
     }

    @Override
    protected void onPause() {
         super.onPause();
         if (spiceManager.isStarted()) {
             spiceManager.shouldStop();
         }

     }

希望这有帮助

只需添加一些布尔标志并在启动另一个活动之前切换它即可。另外,将您的onStop方法更改为:

protected void onStop() {
    if (spiceManager.isStarted() && !mIsStartedNewActivity) {
        spiceManager.shouldStop();
    }
    super.onStop();
}

只需添加一些布尔标志并在开始另一个活动之前切换它。另外,将您的onStop方法更改为:

protected void onStop() {
    if (spiceManager.isStarted() && !mIsStartedNewActivity) {
        spiceManager.shouldStop();
    }
    super.onStop();
}

是的,在onStop()父活动之前调用新活动的onStart(),因此它会断开service@Stepan因此,您尝试过使用onResume()和onPause()而不是onStop()和onStart()?是的,在onStop()父活动之前调用新活动的onStart(),因此它会断开连接service@Stepan因此,我尝试过使用onResume()和onPause()而不是onStop()和onStart()?