我已经用谷歌搜索了一段时间,阅读了文档,但我找不到任何答案。我的[简化]场景是:
用户首先登录到应用程序,同步请求被触发,我的 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 发布事件吗?如果不是,这个问题的最佳解决方案是什么?
谢谢 !