バックグラウンド・スレッドからメインスレッドにタスクを返したい場合は、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);