我已经谷歌搜索了一段时间,阅读文档,但我找不到任何答案。 我的[简化]场景是:
用户首先登录到应用程序,触发同步请求,我的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发布事件吗?如果没有,这个问题的最佳解决方案是什么?
谢谢!
答案 0 :(得分:0)
我在我的syncAdapter中使用了android:process:sync
,只是删除了这个LocalBroadcastManager
,但我认为使用EventBus可以正常工作。这是因为在进行进程间通信时,您无法发送LocalBroadcast或Event,它必须在同一进程中,否则您应该使用其他方法。