浅谈android的MVP设计模式之内存泄露问题
来源:互联网 发布:领淘宝优惠券的软件 编辑:程序博客网 时间:2024/05/16 23:45
我上次写了浅谈mvp,经过一段时间的思考,发现我忽略了一个问题
内存泄露问题。
因为Presenter中持有View接口对象,这个接口对象实际为MainActivity.this,Modle中也同时拥有Presenter对象实例,当MainActivity要销毁时,Presenter中有Modle在获取数据,那activity肯定是无法被销毁的,所以就会造成内存泄露。
当Modle在获取数据时,不做处理,它就一直持有Presenter对象,而Presenter对象又持有Activity对象,这条GC链不剪断,Activity就无法被完整回收。
解决MVP的内存泄露
Presenter在Activity的onDestroy方法回调时执行资源释放操作
解决MVP的内存泄露
Activity
@Override public void onDestroy() { super.onDestroy(); mPresenter.destroy(); mPresenter = null; }
Presenter
public void destroy() { view = null; if(modle != null) { modle.cancleTasks(); modle = null; }}
Modle
public void cancleTasks() { // TODO 终止线程池ThreadPool.shutDown(),AsyncTask.cancle(),或者调用框架的取消任务api}
我认为吧上面这些写起来要花上不少时间,不适合小项目,但是由于面向MVP接口编程,可适应需求变更,所以MVP适用于比较大的项目;因为其简化了Activity和Fragmnt的职责,可大大减少View层的代码量,比起MVC中Activity,Fragment动不动上千行的代码量,简直优雅!
0 0
- 浅谈android的MVP设计模式之内存泄露问题
- Android优化浅谈之内存泄露
- Qt浅谈之内存泄露
- Android之内存泄露
- Android之内存泄露
- Android基础之内存泄露
- Android Handler之内存泄露
- Android设计模式之浅谈MVP
- Android设计模式之浅谈MVP
- Android设计模式之浅谈MVP
- Android设计模式之浅谈MVP
- Android设计模式之浅谈MVP
- 浅谈Android中MVP设计模式
- Android设计模式之浅谈MVP
- 浅谈Android MVP 设计模式 (下)
- Android设计模式之浅谈MVP
- Android之内存泄露与内存管理
- Android之内存泄露LeakCanary检测
- ThinkPHP利用phpqrcode生成二维码
- Codeforces Round #402 (Div. 2) C. Dishonest Sellers(贪心)
- java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils是什么问题
- Linux平台安装MongoDB
- const关键字
- 浅谈android的MVP设计模式之内存泄露问题
- JS如何判断空对象,及typeof和instanceof的区别
- Leetcode 9
- 定位详解
- 折线分割平面
- 每天一点积累
- 控制系统的振荡
- Redex安卓Apk优化技术研究
- 剑指Offer:二进制中1的个数