EventBus从AbstractThreadedSyncAdapter发布或postSticky到Activity

时间:2014-12-05 08:21:20

标签: java android greenrobot-eventbus

我已经谷歌搜索了一段时间,阅读文档,但我找不到任何答案。 我的[简化]场景是:

用户首先登录到应用程序,触发同步请求,我的onPerformSync被调用。 我正试图通过EventBus将事件从AbstractThreadedSyncAdapter发布到我的MainActivity。同步完成后,我发布了一个事件,应该在MainActivity上调用以使其完成所有操作,但它无法正常工作。 我的代码:

AbstractThreadedSyncAdapter

 //Constructor
  public MyMoneySyncAdapter(Context context, boolean autoInitialize) {
         super(context, autoInitialize);
         this.context = context;
         EventBus.getDefault().post(new SyncEvent(SyncEvent.SyncStatus.Started));
     }

onPerformSync:

EventBus.getDefault().postSticky(new SyncEvent(SyncEvent.SyncStatus.Running));
//...some ops....
//all done
EventBus.getDefault().postSticky(new SyncEvent(SyncEvent.SyncStatus.Finished));

和MainActivity:

@Override
    protected void onResume() {
        super.onResume();
        EventBus.getDefault().register(this);
        EventBus.getDefault().getStickyEvent(SyncEvent.class);
    }


public void onEventMainThread(SyncEvent event){
            //never gets called  
}

甚至可以从syncService发布事件吗?如果没有,这个问题的最佳解决方案是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我在我的syncAdapter中使用了android:process:sync,只是删除了这个LocalBroadcastManager,但我认为使用EventBus可以正常工作。这是因为在进行进程间通信时,您无法发送LocalBroadcast或Event,它必须在同一进程中,否则您应该使用其他方法。