当我在这样的片段中开始新活动时
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()
中注册,或者不保留片段在内存中。