1. rx+retrofit+mvp,网络请求时如何解决Activity内存泄漏和取消回调?不需要使用RxActivity
使用WeakReference<IView>,最好用WeakReference,能取消掉回调里面的代码执行,判断弱引用是否为空
2. rx+retrofit,非mvp模式,需要采用static的方法解决内存泄漏
3. rx+retrofit网络请求,使用bindActivityEvent容易导致程序退出后,线程回调onComplete出错崩溃,bindToLifecycle不会导致程序崩溃。
rx纯Observerable异步操作,使用bindActivityEvent不会导致程序崩溃
4. bindToLifecycle,退出界面后,先回调onComplete,再调用onDestory,如果是home键退出,先回调onPause,再回调onComplete,再回调onStop
bindUntilEvent(ActivityEvent.DESTROY),退出界面后,先调用onDestory,再调用onComplete
5. bindToLifecycle和bindUntilEvent,如果线程正处于sleep状态,会中断。
6. 使用RxActivity和RXFragment,不会导致new多个Subscriber,只取消一次订阅,仍然会全部取消订阅
7. Subscriber能被主动取消订阅,并且在onComplete和onError之后被自动取消订阅,因此如果只定义一个Subscriber对象是无法被重用的,通常用Subscriber.
Observer不能被取消订阅,在onComplete和onError之后不会取消订阅,定义一个Observer对象可以重用。
8. rx+retrofit的网络请求完毕以后,会自动回调onNext,onComplete,如果网络异常调用onError,而纯rx的Observerable,则不会,需要程序员主动在call里面调用onNext,onComplete。
9. rx Observerable执行异步操作,要放在static的函数里面配合WeakReference使用,否则会造成Activity内存泄漏,(但是如果在fragment里面,则貌似不会?)
10. Subscriber回调函数要做引用的非空判断
使用WeakReference<IView>,最好用WeakReference,能取消掉回调里面的代码执行,判断弱引用是否为空
2. rx+retrofit,非mvp模式,需要采用static的方法解决内存泄漏
3. rx+retrofit网络请求,使用bindActivityEvent容易导致程序退出后,线程回调onComplete出错崩溃,bindToLifecycle不会导致程序崩溃。
rx纯Observerable异步操作,使用bindActivityEvent不会导致程序崩溃
4. bindToLifecycle,退出界面后,先回调onComplete,再调用onDestory,如果是home键退出,先回调onPause,再回调onComplete,再回调onStop
bindUntilEvent(ActivityEvent.DESTROY),退出界面后,先调用onDestory,再调用onComplete
5. bindToLifecycle和bindUntilEvent,如果线程正处于sleep状态,会中断。
6. 使用RxActivity和RXFragment,不会导致new多个Subscriber,只取消一次订阅,仍然会全部取消订阅
7. Subscriber能被主动取消订阅,并且在onComplete和onError之后被自动取消订阅,因此如果只定义一个Subscriber对象是无法被重用的,通常用Subscriber.
Observer不能被取消订阅,在onComplete和onError之后不会取消订阅,定义一个Observer对象可以重用。
8. rx+retrofit的网络请求完毕以后,会自动回调onNext,onComplete,如果网络异常调用onError,而纯rx的Observerable,则不会,需要程序员主动在call里面调用onNext,onComplete。
9. rx Observerable执行异步操作,要放在static的函数里面配合WeakReference使用,否则会造成Activity内存泄漏,(但是如果在fragment里面,则貌似不会?)
10. Subscriber回调函数要做引用的非空判断