我遇到以下症状的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。
答案 0 :(得分:0)
onEventMainThread
你在主线程中运行它的方法,第一次运行它时没有任何事件,当它再次发生时,要在同一个线程中执行,正在顺序执行为什么标志被更改为false,将事件更改为线程上的执行或更改标志的逻辑
记住sticky
是一个正在进行的事件并以这种方式注册,查看是否存在此类事件,然后直接调用他的onEvent
因此顺序执行并且标志被更改