rxlifecycle 框架的使用
-
github地址: https://github.com/trello/RxLifecycle
-
在android studio 里面添加引用
compile 'com.trello:rxlifecycle-components:0.6.1'
-
让你的activity继承
RxActivity
,RxAppCompatActivity
,RxFragmentActivity
让你的fragment继承RxFragment
,RxDialogFragment
;下面的代码就以RxAppCompatActivity
举例 -
bindToLifecycle
方法
在子类使用Observable中的compose操作符,调用,完成Observable发布的事件和当前的组件绑定,实现生命周期同步。从而实现当前组件生命周期结束时,自动取消对Observable订阅。
-
上面的代码是Observable循环的发送数字,并且在textview中显示出来
1、没加compose(this.<Long>bindToLifecycle())
当Activiry 结束掉以后,Observable还是会不断的发送数字,订阅关系没有解除
2、添加compose(this.<Long>bindToLifecycle())
当Activity结束掉以后,Observable停止发送数据,订阅关系解除。 -
从上面的例子可以看出
bindToLifecycle()
方法可以使Observable发布的事件和当前的Activity绑定,实现生命周期同步。也就是Activity 的 onDestroy() 方法被调用后,Observable 的订阅关系才解除。那能不能指定在Activity其他的生命状态和订阅关系保持同步,答案是有的。就是bindUntilEvent()
方法。这个逼装的好累! -
bindUntilEvent( ActivityEvent event)
-
ActivityEvent.CREATE
: 在Activity的onCreate()方法执行后,解除绑定。 -
ActivityEvent.START
:在Activity的onStart()方法执行后,解除绑定。 -
ActivityEvent.RESUME
:在Activity的onResume()方法执行后,解除绑定。 -
ActivityEvent.PAUSE
: 在Activity的onPause()方法执行后,解除绑定。 -
ActivityEvent.STOP
:在Activity的onStop()方法执行后,解除绑定。 -
ActivityEvent.DESTROY
:在Activity的onDestroy()方法执行后,解除绑定
-
经过测试发现,当Activity执行了onStop()方法后,订阅关系已经解除了。