カテゴリー
Android Java RxJava

RxJavaを学ぶ(その3)

バックグラウンド・スレッドからメインスレッドにタスクを返したい場合は、subscribe()の前段にobserveOn(AndroidSchedulers.mainThread())を挿入する。これでバックグラウンド・タスクの結果によるUIのアップデートが可能。

下記はCompositeDisposableにdisposeを任せる例も兼ねて書いてみた。

Disposable isCountingDownDisposable = playMidi.isCountingDownSubject.observeOn(AndroidSchedulers.mainThread()).subscribe(value -> {
      if (value) {
        playButton.setImageResource(R.drawable.ic_round_loop_24);
        playButton.setPadding(10,10,10,10);
      } else {
        playButton.setImageResource(R.drawable.ic_play_fill);
        playButton.setPadding(-20,-20,-20,-20);
      }
    });
compositeDisposable.add(isCountingDownDisposable);