mvp架构的核心是解决代码层次的耦合性,传统的mvc模式,在一个界面完成了包括网络请求,业务处理,导致一个页面的代码量比较大如果后期的业务需求发生改变,代码的修改幅度会比较痛苦;那么mvp恰恰是用来处理耦合性和界面出现内存泄漏的问题。
为什么说mvc写法有时会导致内存泄漏
比如说一个界面,包含了在一个线程中开启一个网络请求,那么这个时候关闭了页面,而子线程中的网络请求依然存在着,就容易导致内存泄露问题
这里mvp中的v就是view层,p-presenter业务层主要做业务处理,m-model 数据层做数据请求
从上面的图,不难理解到v层和p层有关联,p层和v、m层有关联,m层和p层有直接关联
也就是说,p层相当于中间层,视图层通过在p层获取数据,并显示是相关的页面中,看代码:
上面的业务层基类,在attachView()中做了创建一个view层的操作,在顶层已经明确创建view的类型;detachView()中释放掉view的引用,那么p层怎么跟activity产生关联,看代码:
p层已经绑定在了activity中,我们看一下view层和model层、
v层定义成了一个接口,可以在view层定义多种方法,在p层获取数据,在具体的界面层去显示
model层为甚接口里还定义个接口,就是为了传数据,ok,v和m层都看了,该看关键点在p层是怎么产生关联的
v和m已经在p层完成了数据的请求和获取,最后在具体的activity中完成数据显示
mainActivity中实现IGriVIew方法,获取到v层通过p层拿到model层的数据