しばらくグーグルでドキュメントを読みましたが、答えが見つかりませんでした。私の[簡略化された]シナリオは次のとおりです。
ユーザーが最初にアプリにログインすると、同期要求が発生し、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 からイベントを投稿することさえ可能ですか? そうでない場合、この問題の最善の解決策は何ですか?
ありがとう !