当我在像这样的片段中开始新活动时
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();
}
答案 0 :(得分:1)
看起来你在“旧”活动的片段中调用了setRetainInstance(true)
,这就是为什么不调用该片段的onDestroy()
方法的原因(片段不被操作系统破坏,只是与活动分离而且留在记忆中。)
我建议您取消注册onPause()
中的事件并在onStart()
中注册或不在内存中保留片段。