MVP的基类抽取,绑定解除View(可以避免内存泄漏)

本文探讨了在MVP(Model-View-Presenter)设计模式下,如何通过基类抽取和解除View绑定来有效避免内存泄漏问题。依赖项未给出详细信息。
摘要由CSDN通过智能技术生成

绑定解除View(可以避免内存泄漏)

使用MVP还遇到过一个问题,容易产生内存泄漏的问题,我的项目里面有成百上千个Activity类,每一个Presenter我都做解决内存泄漏这个操作,很容易有些地方疏忽了,那一天可能加班,有点累,就没有注意内存泄漏这方面,结果就给我的项目带来很大的麻烦,而且我这个项目后期别人接手他可能意识不到内存泄漏的问题,他在基于我的框架写MVP的时候有可能也不做内存泄漏,那这样子的话,内存泄漏的多了就会造成OOM我们的程序就会奔溃。所以我当时在抽基类的时候我就想到,要定义规范,抽基类就两点,把冗余的代码简化一下放在基类里面,不必要每个子类都写一样的业务逻辑。第二就是定义规范,比如所有的子类都要进行一个初始化控件的操作,那么我就写一个抽象方法,你只要继承我的基类,那么你必然要实现抽象方法,只要实现抽象方法,那你一看抽象方法这个方法你就知道,他是做什么逻辑的,你就把你的逻辑放到你实现的抽象方法里面,那这样的话代码阅读性更高,每个人不管怎么做,这个操作都必须要做,我抽了一个Presenter。我在做MVP的时候抽了一个BasePresenter,通过泛型我把内存泄漏就处理了,任何一个MVP的子类只要继承我的BasePresenter,就自动把内存泄漏给解决了。别人就不用考虑这个方面了,不论是我自己还是别人接手我的项目,都可以省很多功夫,那么我们APP的健壮性更好。


依赖:

dependencies {
 
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1'
    compile 'com.android.support:support-v4:26.0.0-alpha1'
    testCompile 'junit:junit:4.12'
    /*5.0新控件的依赖*/
    compile 'com.android.support:design:26.0.0-alpha1'

    /*RxJavaRxAndroid的依赖*/
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'io.reactivex.rxjava2:rxjava:2.1.0'

    /*RetrofitRxAndroid配置依赖*/
    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'

    /*使Retrofit的转化器自定义完成数据的转化
    * 就是我们可以接口中少写一些bean
    * */
    compile 'com.squareup.retrofit2:converter-scalars:+'

    /*gson解析*/
    compile 'com.google.code.gson:gson:2.8.1'
    /*Log工具:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/1115/3685.html*/
    compile 'com.github.zhaokaiqiang.klog:library:1.6.0'
}


/**
 * MVP的基本封装
 * 1.搭建框架,首先创建基类(IActivity,BasePresenter,BaseMvpActivity)
 * 2.SplashActivity使用一下MVP(SplashView,SplashPresenter)
 * 3.自己搭建FragmentMVP的基类,并使用一下(IFragment,BaseMvpFragment)
 */
public class SplashActivity extends BaseMvpActivity<SplashView,SplashPresenter> {

    @Override
    public SplashPresenter initPresenter() {
        return new SplashPresenter();
    }

    @Override
    protected  void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        presenter.getData();
    }

}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值