优雅的Android的MVP架构Retrofit2+Rxjava2,避免内存泄漏问题

文章的代码是来源于郭子轩,地址是:https://blog.csdn.net/gpf1320253667/article/details/84363059?utm_source=app

记得以前在格力的时候,也是用MVP架构,但是代码比较老,随着架构师离开,后面加入的新人越来越多,MVP架构逐渐变形。几乎每个Activity都持有一个自己的Presenter。每个Presenter都有大量重复的代码。而activity持有presenter这个也可能造成内存泄漏。这个可能也是网上大多数MVP架构的框架的样子。

大家看这样的一个代码:

MvpPresenter mvpPresenter = new MvpPresenter(this);

activity就这样持有了presenter的强引用。这样当页面销毁的时候。presenter里面RX的资源就会成为无法回收的垃圾。就会造成内存泄漏。

当然。你可能会想为什么不在每个activity的ondestroy里来进行解绑呢?既然都这样想了。为什么不在baseActivity里的onDestroy里进行解绑呢?对的,我们可以在baseActivity里利用泛型来传递过来具体的presneter进行解绑。更进一步,我们抽出共有的代码,创建basePresenter.我们接下来就来看具体的整体代码实现:

在此之前随便说下Retrofit和RxJava的作用是什么:

Retrofit主要是封装的OkHttp,用注解的方式来进行便捷的网络访问请求。一般是配合Rxjava使用。

RxJava主要用来处理异步任务,方便快捷切换线程。比如访问网络是在IO线程,访问完事后,显示返回来的数据又在主线程。我们用这个玩意帮我们很方便的切换。RxJava是响应式编程的一种,是属于观察者模式

你可能感兴趣的:(高级android)