私のアプリでは、サーバーとの同期に SyncAdapter(AbstractThreadedSyncAdapter) を使用しています。基本的にバックグラウンド サービスでは、SQL テーブルにデータを挿入し、最後に UI に ListView を新しいデータで更新するように通知します。この件に関して、私は GreenRobot EventBus を使用しようとしましたが、成功しませんでした。
私のイベント
public class SyncResultMsg {
public String message="";
public SyncResultMsg() {}
public SyncResultMsg(String value) {
this.message = value;
}
}
データベースにデータを挿入した後、次のように EventBus を呼び出します
SyncResultMsg event = new SyncResultMsg();
event.message = "groupsFetched";
EventBus.getDefault().post(event);
ListView を表示する Fragment では、次のように EventBus を受信しようとします。
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
public void onEventMainThread(SyncResultMsg event) {
String msg = event.message;
if (msg.equals("groupsFetched")){
showNewData();
}
}