為さねば成らぬ

retia.verno@gmail.com

EventBus

greenrobot/EventBus · GitHub

最近EventBusをつかってるけど、かなりいい。 これのおかげでAsyncTaskLoader使わなくてよかったり、Fragment間の通信に関してActivityにinterface実装して~とかしないでいいので挙動がわかりやすい。

自分で定義したEventクラスを好きな箇所で投げて、FragmentやActivityのスレッド(UIスレッド含む)で捕まえて処理する。 頻繁に使うのがデータをネットワークから取ってきて表示するようなところ。

new Thread(new Runnable(){
  @Override
  public void run(){
    #通信してデータを取得
    Data d = loadData();
    EventBus.getDefault().post(new DataLoadedEvent(d));
  }
}).start();

別スレッドで通信し、結果をEventとして投げる。でそのFragment(Activity)でEventを処理。

複数のFragmentでキャッチしちゃうときがあるので、その時はEventにIDを振っておいてそれで判断するのが良いかも。