RxJavaを少し使っていて、その利点が分かります。 onStop()
にサブスクリプションが登録解除されたときに、匿名の内部クラスがガベージコレクションされるということです。AndroidのView#をRxJavaにポストする(Runnable)
RxJavaの新機能です。申し訳ありませんが、これが正しくない場合は、
おそらくのようなもの:
pager.post(new Runnable() {
public void run() {
final int currentItem = pager.getCurrentItem();
pager.setAdapter(new MyAdapter(getSupportFragmentManager()));
pager.setCurrentItem(currentItem);
}
});
は次のようになります。私が尋ねる
Observable.just(pager)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(pager -> {
final int currentItem = pager.getCurrentItem();
pager.setAdapter(new MyAdapter(getSupportFragmentManager()));
pager.setCurrentItem(currentItem);
});
理由は、私がViewPager
を回転させて更新する際に問題に遭遇していると、それは匿名の内部のRunnableが判明していることですpost(Runnable)
に渡されます。タスクにWeakReference
という静的な内部クラスを作成する時間を節約できます。
あなたが最初に経験しているところでは、どのような問題がありますか? Reactiveは、そのメリットとともに複雑さを増しています。本当に最初にそれが必要なのであれば、考えるのは賢明でしょう。 –
私はViewPagerをリフレッシュしていましたが、アクティビティが破棄されたときにリフレッシュが発生し、このようなクラッシュが発生する可能性があります。https://code.google.com/p/android/issues/detail?id=218912 –