onSttop()在onStart()之后调用

时间:2017-02-01 13:55:01

标签: android android-activity android-lifecycle robospice

在我的申请中,我正在使用robospice。所以在我的BaseActivity中创建了一个spice管理器:

@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() - 所以它断开了服务。任何想法如何解决?

2 个答案:

答案 0 :(得分:1)

我不确定我是否理解你的问题。但是,如果我猜你有问题,因为在你开始新活动后调用了你的BaseActivity onStop。

在这种情况下,您可以使用 onResume onPause 而不是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();
         }

     }

希望这会有所帮助。

答案 1 :(得分:0)

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

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