Я не новичок в использовании автобуса событий, но я получил странное поведение в следующем сценарии:Отто автобус событие не уволили из деятельности на другой вид деятельности с фрагментами
У меня есть MainActivity, которые имеют два фрагмента, которые необходимо обновить их содержимое с использованием Otto
автобуса событий из SecondActivity, который запускался из MainActivity. Проблема в том, что при запуске SecondActivity MainActivity приостанавливается, и, таким образом, шина будет незарегистрирована внутри своего метода , и когда EventBus
уволил свое событие из SecondActivity, он не будет принят двумя фрагментами в MainActivity.
Btw, MainActivity имеет абонентский метод для получения обновления из потока AsyncTask
, и в результате он должен регистрировать и отменять регистрацию шины событий.
Вот мой BusProvider
класс код:
public class BusProvider {
private static final Bus BUS = new Bus(ThreadEnforcer.ANY);
public static Bus getInstance() {
return BUS;
}
private BusProvider() {
}
}
Вот мой код события автобус MainActivity:
@Override
protected void onResume() {
super.onResume();
bus.register(this);
}
@Override
protected void onPause() {
super.onPause();
bus.unregister(this);
}
@Subscribe
public void onAsyncResult(SomeEvent event) {
// do something
}
Вот мой Fragmenta и FragmentB код шины событие:
@Override
protected void onResume() {
super.onResume();
bus.register(this);
}
@Override
protected void onPause() {
super.onPause();
bus.unregister(this);
}
@Subscribe
public void onValueUpdate(UpdateEvent event) {
mTvValue.setText(event.value);
}
Теперь этот код внутри SecondActivity, который мне нужно обновить от него:
BusProvider.getInstance().post(new UpdateEvent("Value Updated!"));
Что происходит в том, что UpdateEvent
пожары от SecondActivity, но не получил от двух фрагментов А и В.
ценится любой ответ полезным.
Его решена, я ценю вашу помощь. – blueware