利用RxJava避免线程导致的内存泄露问题

关于内存泄露的文章有很多,比如https://www.jianshu.com/p/ac00e370f83d#是比较优秀的一篇,这里不再重复。

导致内存泄露的一个常见可能原因是销毁Activity时尚有耗时线程没有结束。之前公司的网络请求操作利用Retrofit+RxJava进行了高度封装,在访问网络时一般是调用静态方法NetWorks.Post......,在销毁Activity时如果仍在访问网络会导致内存泄露。

Android官方RxJava教程的demo中给出了一个解决这种问题的思路。在RxJava中有多个subscribe(...)方法可供选择,其中部分subscribe()方法会返回一个Disposable对象。该官方demo是MVP结构,在Presenter类中有一个CompositeDisposable对象,该对象可以通过add(Disposable d)方法添加返回的Disposable对象,最后在销毁Activity前调用CompositeDisposable的clear()方法即可取消访问。这样基本上可以避免绝大多数因为开启了新线程导致的内存现楼问题。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容