1

当我在这样的片段中开始新活动时

    Intent launchIntent = new Intent();
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    launchIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    launchIntent.setClassName(getBaseActivity().getPackageName(), MainActivity.class.getName());
    startActivity(launchIntent);
    getBaseActivity().finish();

订阅我想在新活动中捕获的同一事件的旧活动片段被调用。我是错误地结束了旧的活动还是片段没有结束?我在每个片段和活动的 onDestroy 方法中取消注册。

@Override
public void onDestroy() {
    OttoBus.getInstance().unregister(this);
    super.onDestroy();
}
4

1 回答 1

1

看起来您调用setRetainInstance(true)了“旧”活动的片段,这就是为什么onDestroy()不调用该片段的方法(片段不会被操作系统破坏,只是从活动中分离并保存在内存中)。

我建议您要么取消注册事件onPause()并注册,onStart()要么不将片段保留在内存中。

于 2014-07-09T21:05:45.943 回答