想必大家对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,直接看代码。