在我的申请中,我正在使用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() - 所以它断开了服务。任何想法如何解决?
答案 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();
}