【发布时间】:2017-01-12 12:59:58
【问题描述】:
使用了一点 RxJava,可以看到它的优点。一种是匿名内部类在onStop() 中取消订阅时被垃圾收集。
我是 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 但可能会在 Activity 被销毁时发生刷新并且会像这样 code.google.com/p/android/issues/detail?id=218912
标签: android android-view rx-java rx-android