RxLifecycle 组件
该 RxLifecycle 库使得它更容易观察到的订阅绑定到 Android 活动和片段的生命周期。
请记住,忘记取消订阅 Observable 可能会导致内存泄漏,并在系统销毁后保持活动/片段活动事件。
将库添加到依赖项:
// use the last version available
compile 'com.trello:rxlifecycle:0.6.1'
compile 'com.trello:rxlifecycle-components:0.6.1'
然后扩展 Rx*
类:
RxActivity
/support.RxFragmentActivity
/support.RxAppCompatActivity
RxFragment
/support.RxFragment
RxDialogFragment
/support.RxDialogFragment
support.RxAppCompatDialogActivity
你已经完成了设置,当你订阅 Observable 时,你现在可以:
someObservable
.compose(bindToLifecycle())
.subscribe();
如果你在活动的 onCreate()
方法中执行此操作,它将自动取消订阅 onDestroy()
。
同样的情况发生在:
onStart()
- >onStop()
onResume()
- >onPause()
onAttach()
- >onDetach()
(仅片段)onViewCreated()
- >onDestroyView()
(仅片段)
作为替代方案,你可以在希望取消订阅时指定事件:
来自一项活动:
someObservable
.compose(bindUntilEvent(ActivityEvent.DESTROY))
.subscribe();
从片段:
someObservable
.compose(bindUntilEvent(FragmentEvent.DESTROY_VIEW))
.subscribe();
你还可以使用方法 lifecycle()
直接侦听生命周期事件来获取可观察的生命周期。
RxLifecycle 也可以直接传递给它生命周期可观察的:
.compose(RxLifecycleAndroid.bindActivity(lifecycle))
如果你需要处理 Single
或 Completable
,你可以通过在绑定方法后分别添加 forSingle()
或 forCompletable
来实现:
someSingle
.compose(bindToLifecycle().forSingle())
.subscribe();
它也可以与 Navi 库一起使用。