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

    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();
}

最佳答案

看起来您在“旧”活动的片段中调用了setRetainInstance(true),这就是为什么未调用该片段的onDestroy()方法的原因(片段没有被OS破坏,只是与活动分离并保留在内存中)。

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

10-07 19:14