0

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

用户首先登录到应用程序,同步请求被触发,我的 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 发布事件吗?如果不是,这个问题的最佳解决方案是什么?

谢谢 !

4

1 回答 1

0

android:process:sync在我的 syncAdapter 中使用,只是删除了它LocalBroadcastManager,但我认为使用 EventBus 就可以了。那是因为在进行进程间通信时,不能发送LocalBroadcast或者Event,必须在同一个进程上,否则就应该使用其他方式。

于 2014-12-15T19:08:59.680 回答