2015-09-04 2 views
0

У меня проблема с Eventbus со следующими симптомами. У меня есть активность, которая начинает другое действие. Используется Eventbus и булевское значение. Это значение изменяется во время прогона активности. Для первого запуска все нормально, но во втором запуске я получил неправильное значение, измененное в предыдущем запуске. Вот код:Greenrobot 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 верно, но другие пробеги показывает ложные.

+0

Возможно, вы захотите показать, что такое 'isStartFragment' и где/как он используется. –

ответ

0

onEventMainThread метод, который у вас запущен в основном потоке, при первом запуске его никакое событие, когда это произойдет снова, должно выполняться в том же потоке, выполняется последовательно, почему флаг изменен на false, измените событие на выполнение в потоке или измените логику флага , помните, что sticky является постоянным событием и регистрирует его таким образом, посмотрите, есть ли такое событие, и затем прямо вызывает его onEvent выполняется последовательно, а флаг изменен.

+0

Да, но это не помогает. –

+0

@DariusRadius, где вы показываете, является ложным? –

+0

В System.out.println - первый запуск активности верен правильно, но если я изменю его на false в активности, уничтожьте действие и создайте его снова, я получил false. –