MVC:在Android中的体现
Model:模型层,面向需求模型,数据模型 Beans实体sqiteDatabase
View:视图层,面向用户渲染ui画面 layout自定义view
Controller:控制层,面向业务逻辑具体操作 activity Network网络具体业务逻辑
致命缺陷:会造成内存泄漏。
MVP思想精髓与解耦view和model的巧妙详解
Model:模型层
View: 视图层
Presenter:控制model进行业务逻辑处理, 处理完毕后数据封装到Model,收到通知后更新view
方式:是双向的通信方式
优点:view与model层完全分离,所有的逻辑交互都在presenter,分层较为严谨。利用持有view的弱引用,当activity退出时,清空弱引用持有的view,避免内存泄露
MVVM与DataBinding
MVVM是一种设计模式
DataBinding是一种工具,既可以用在MVVM ,也可以用于MVC,MVP
Model:模型层,可以直接使用observableField,内部设置了set get方法
View: 视图层,使用data标签,DataBinding自动生成两个layout文件供DataBinding使用,一个用于渲染布局,一个用于配置信息
ViewModal:可以单项绑定,也可以双向绑定。处理业务逻辑
DataBinding原理:
编译时绑定布局与对象,扫描所有layout布局,如果有data标签,生成两份layout文件,一份用于渲染布局,添加tag标签,另一份用于配置数据,与model里面的数据相绑定。
通过apt生成class文件,通过activity获得顶层view,加载渲染布局,生成一个全局的runnable,监听每一个view,开设一个管道监听model,当model发生变化时,改变view
DataBinding的使用消耗大量的内存,主要是有三方面导致的
1.获取layout里面的view,存入object的数组中,绑定控件的时候再从数组中获取view
2.在全局变量中,有一个全局的runnable一直在监听view,一个activity对应一个runnable,项目越大,内存耗损越大
3.开设一个looper的管道监听model,当model发生改变时,改变view