Связь из фонового потока с основным через Greenrobot Eventbus

В моем приложении я использую SyncAdapter(AbstractThreadedSyncAdapter) для синхронизации с сервером. В основном в фоновой службе я вставляю данные в таблицу sql, а затем, по завершении, я хочу сообщить пользовательскому интерфейсу, чтобы обновить ListView новыми данными. Для этого я пытался использовать GreenRobot EventBus, но безуспешно.

мое событие

public class SyncResultMsg {
    public String message="";
    public SyncResultMsg() {}
    public SyncResultMsg(String value) {
        this.message = value;
    }
}

После вставки данных в базу данных я вызываю EventBus следующим образом

SyncResultMsg event = new SyncResultMsg();
        event.message = "groupsFetched";
        EventBus.getDefault().post(event);

В моем фрагменте, где я показываю ListView, я пытаюсь получить EventBus следующим образом:

@Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onStop() {
        EventBus.getDefault().unregister(this);
        super.onStop();
    }

public void onEventMainThread(SyncResultMsg event) {
        String msg = event.message;
        if (msg.equals("groupsFetched")){
            showNewData();
        }
    }

person Rafael    schedule 23.02.2015    source источник


Ответы (1)


Попробуйте создать собственный EventBus с собственным пулом потоков. Была аналогичная проблема, и это решило ее в моем случае.

person EE66    schedule 19.06.2015