Greenrobot Eventbus持有变量

时间:2015-09-04 15:53:24

标签: android greenrobot-eventbus

我遇到以下症状的Eventbus问题。我有活动开始另一项活动。使用Eventbus和布尔值设置。在活动运行期间更改此值。对于第一次运行都没问题,但是在第二次运行中,我在之前的运行中改变了坏值。这是代码:

公共类ListArchiveTabs扩展了FragmentActivity {

private boolean isStartFragment = true;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    isStartFragment = true;
    EventBus.getDefault().registerSticky(this);
    System.out.println("Create archive activity " + isStartFragment);
}

@Override
public void onDestroy()
{
    super.onDestroy();
    EventBus.getDefault().unregister(this);
    System.out.println("Destroy archive activity");
}

public void onEventMainThread(GetArchiveEvent event)
{
    if(isStartFragment == true) {
        isStartFragment = false;
    } else {
    }
}

}

在第一次运行中,isStartFragment为true,但其他运行显示为false。

1 个答案:

答案 0 :(得分:0)

onEventMainThread你在主线程中运行它的方法,第一次运行它时没有任何事件,当它再次发生时,要在同一个线程中执行,正在顺序执行为什么标志被更改为false,将事件更改为线程上的执行或更改标志的逻辑 记住sticky是一个正在进行的事件并以这种方式注册,查看是否存在此类事件,然后直接调用他的onEvent因此顺序执行并且标志被更改