为什么要考虑在RxJava中使用AndroidObservables

Kau*_*pal 17 android rx-java rx-android

据我所知,AndroidObservable有助于确保:

  1. 订阅者始终在主线程上观察
  2. 当分离/活动分离/停止时,观察立即停止,并且不更新与框架相关的组件(如ui textviews等).

但是,为了确保上下文被释放(防止泄漏),我看到的大多数示例通常都说你必须做.unsubscribe onDestroyView/onDestroy,这实质上会停止订阅,并阻止订阅者接收这些更新.

所以我的问题是:

如果我通过.observeOn(AndroidSchedulers.mainThread()手动指示订阅应该在主线程上发生,那么使用AndroidObservables还有其他优势吗?

以下两种方法有什么不同吗?

_subscription1 = AndroidObservable.bindFragment(MyFragment.this, myCustomAwesomeObservable()) //
                           .subscribeOn(Schedulers.io()) //
                           .subscribe(...);


_subscription2 =  myCustomAwesomeObservable()
                           .subscribeOn(Schedulers.io()) //
                           .observeOn(AndroidSchedulers.mainThread()) //
                           .subscribe(...);


@Override
public void onDestroyView() {
    _subscription1.unsubscribe();
    _subscription2.unsubscribe();
    super.onDestroyView();
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*hke 6

你是对的.AndroidObservable.bindFragment目前所做的是:

此帮助程序将调度在主UI线程上观察的给定序列,并确保在计划完成时不会将任何通知转发到活动.

- 源代码评论的一部分

因此,它并没有真正改变您使用的实现.

但是,使用AndroidObservable仍然是一个好主意,因为将来可以添加额外的功能.