MVP:有呼吸的Android架构

时间:2021-08-28 21:14:25

想必大家对MVP框架都比较熟悉了,今天和大家分享几个在MVP框架中比较核心的要点。

思考几个问题:



(1)后台异步处理任务没有完成,presenter会持有View的引用,此时返回退出了Activity,后台异步的动作不会立即停止,这里就会有内存泄漏的隐患。


解决方案:在presenter中加入管理view生命周期的方法。

方案原理:presenter中增加了类似的生命周期的方法,在退出Activity的时候取消持有Activity。


(2)在销毁后需要思考一点,后台的延时操作返回时,这个时候view被销毁了,如果接着去调用view的方法就会抛出空指针异常。


解决方案:在回用view的方法时,首先判断当前view是否已被置为null。

方案原理:根据当前的状态来控制是否需要回到View的方法,避免了在Activity被回收后,继续调用view的回调方法处理更新控件,导致程序crash。


(3)因为presenter的生命周期方法都会有,所以每个Activity去绑定View和解绑View就会有很多重复的代码。


解决方案:所以我们定义一个BasePresenter,在其中定义绑定View和解除绑定的方法(BasePresenter要使用泛型,因为不能限定死传入的View。)。

方案原理:利用泛型和继承的方式构建动态化。


(4)BaseView:一般显示加载内容的界面,都会有showLoading和hideLoading两个方法。

解决方案:定义BaseView。

方案原理:利用继承的优点,子类View就可以直接继承自BaseView,共享方法和变量。


ok,直接看代码。

MVP:有呼吸的Android架构


MVP:有呼吸的Android架构


MVP:有呼吸的Android架构


MVP:有呼吸的Android架构


MVP:有呼吸的Android架构


MVP:有呼吸的Android架构


MVP:有呼吸的Android架构

MVP:有呼吸的Android架构