Использует немного RxJava и может видеть его преимущества. Одно из них заключается в том, что анонимные внутренние классы получают сбор мусора, когда подписка отменяется в onStop()
.Convert Android View # post (Runnable) to RxJava
Я новичок в 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. –