-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
框架中 RxLifecycle 的绑定使用和注意事项。 #177
Comments
@JessYanCoding 我用框架之前没怎么注意这篇文章 直接上手 今天偶然发现onStop后不走回调了,我猜就是这个东西的问题,上来一找果然,稳的很 |
@NerdAnonymous 我也遇到这问题,但看不太懂,请问要怎么处理? |
@NerdAnonymous 我解决了。看了一下RxLifecycle和MVPArms源码,找到了方法。 |
fragment里面怎么使用呢 |
@cjcj125125 和 Activity 的用法没有任何区别 |
mModel.getTimUserAndSig(replaceToken, userRole) |
常规 RxLifecycle 的使用和缺点
RxLifecycle 的常规使用是通过继承RxActivity,然后在子类Activity中如下面的这样使用
这种通过继承的方法,有以下几个问题。
我们的基类Activity,Fragment必须继承于RxActivity,RxFragment,才能调用compose(bindToLifecycle()) 绑定
如果在MVP结构 P层中有Rx流操作,那么就不能调用 compose(bindToLifecycle()) 绑定,因为该方法在RxActivity中。同理其他类一样。
RxLifecycle 的绑定是区分 Fragment 和 Activity的,如果你是在P里面把View接口强转成RxActivity,那么就可能出错。因为如果P可以在Fragment复用,那么强转就会带来问题。而且View接口的父类可能是RxActivity,也有可能是RxFragmentActivity,当然你可以通过if else + insteadof 来处理,但是每个流都这么写是很痛苦的,代码不好读,也很繁琐。
框架中RxLifecycle 绑定
框架对RxLifecycle的实现方式 是通过接口Lifecycleable实现 具体实现在父类BaseActivity中
绑定方式
是通过工具类
RxLifecycleUtils好处是解决了上面说的三个不足的地方。
注意事项
对于第三方的Activity是无法绑定的
因为你不能继承BaseActivity,也可以说无法实现Lifecycleable这个接口,
如果确实不能继承BaseActivity,该如何实现RxLifecycle
模仿BaseActivity 去实现Lifecycleable这个接口
RxLifecycle 绑定后自动取消订阅的时间(下面的方法来自RxLifecycle源码)
The text was updated successfully, but these errors were encountered: