关于Rxjava+Retrofit网络请求防止内存泄露

本文介绍了如何使用Rxjava和Retrofit在网络请求中防止内存泄露。通过在Activity销毁时取消订阅,避免网络请求完成后回调导致的null异常。主要涉及的类包括CompositeDisposable和DisposableObserver,实战部分展示了在BasePresenter和BaseActivity中如何实现订阅的管理。
摘要由CSDN通过智能技术生成
简介

不知道大家有没有碰到这个问题,在一个Activcity正在加载数据,网络请求还未完毕,此时用户将Activity关闭了,这时候就造成了内存泄露(为啥泄露自己想),Activity并没有被释放的,这时候网络请求完了,回调了请求成功方法,填充view就开始报null异常了...,不知道大家有没有遇到这个问题?在以前网络请求发起是很难取消掉的,我们是在onSuccess回调加了判断Activity是否被销毁掉,在进行填充view

原理

我们有了Rxjava,流水线,既然事件可以订阅,也可以取消订阅,我们只需要在Activity被销毁的时候,将这个页面的所有的订阅全部取消掉

主要使用的几个类
  1. CompositeDisposable(个人理解:一个管理订约)
  2. DisposableObserver就是一个Observer,他实现了Disposable接口
实战

所有的网络请求都使用BaseObserver

public abstract class BaseObserver<T> extends DisposableObserver<T> {

    public BaseObserver(CompositeDisposable compositeDisposable) {
        compositeDisposable.add(this);
    }
}

在BasePresenter

public abstract class BaseMvpPresenter<V> {
    public CompositeDisposable mCompositeDisposable = new CompositeDisposable();
    public V mView;

    public void setView(V view){
        
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值