据我所知,AndroidObservable有助于确保:
订阅服务器总是观察主线程
分离/停止片段/活动后,观察立即停止,框架相关组件(如ui-textview等)不会更新。
但是,为了确保上下文被释放(防止泄漏),我看到的大多数示例通常都说您必须执行.unsubscribe OnDestroyView/OnDestroy,这基本上会停止订阅,并且无论如何都会阻止订户接收这些更新。
所以我的问题是:
如果我手动指出订阅应该通过.observeon(androidschedulers.main thread())在主线程上进行,那么使用androidobserveables还有什么好处吗?
以下两种方法有什么不同吗?
_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();
}
最佳答案
你是对的。androidobservable.bindFragment目前所做的是:
此助手将计划在主UI线程上观察给定的序列,并确保在计划完成时不会向活动转发任何通知。
--源代码注释的一部分
所以,使用哪种实现并没有真正的区别。
但是,使用Androidobservable是一个好主意,因为将来还可以添加其他功能。