完成活动的Otto Event Bus订阅者

时间:2014-07-07 19:23:41

标签: android otto

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

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

1 个答案:

答案 0 :(得分:1)

看起来你在“旧”活动的片段中调用了setRetainInstance(true),这就是为什么不调用该片段的onDestroy()方法的原因(片段不被操作系统破坏,只是与活动分离而且留在记忆中。)

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