摘要
“基础 Android 知识掌握的不错,学习能力也不错。但是基础知识部份比较薄弱,有些概念和逻辑掌握不清。” 感谢春林的这句话。
我们针对业务模型,建立的数据结构和相干的类,就能够理解为AndroidApp 的 Model,Model 是与 View 无关,而与业务相干的,例如数据库读取数据,应当是属于model层的事情。(感谢@Xander的讲授)
我的料想:
至于为何我们通常直接去在 Activity 中去写数据库数据读取,我的料想是由于简单。试想,如果是为了规范,首先定义1个getDataFromDB()的接口,再写个类实现getDataFromDB()方法,以后如果改了要求数据所用的方法,直接改写实现类,听起来确切不错,可是仅仅是为了从数据库读点数据,额外添加了最少两个类文件真的成心义吗。
固然网络要求,是属于业务逻辑层C层。
MVP中 Presenter 真正需要处理的并不是业务逻辑,而应当是视图逻辑。业务逻辑应当是视图无关的,可以是单独的1个类中,也能够是在P中。
P与V是1对多关系
EventBus应当作用于P层,在P层发送,在P层接收。
MVVM中,M层改变其实不是直接改变V层,而是通过VM层去改变V层。M与V照旧是不直接操作的。
相干介绍:http://www.tianmaying.com/tutorial/AndroidMVC
有关软件整体结构与组件的抽象描写,用于指点大型软件系统各个方面的设计。
总结1下,就是1全部软件工程项目中的骨架,是1种宏观的计划。
在面试的时候,聊到 Volley 要求到网络的数据缓存。当时说到是 Volley 会将每次通过网络要求到的数据,采取FileOutputStream,写入到本地的文件中。
那末问题来了:这个缓存文件,是声明在1个SD卡文件夹中的(也能够是getCacheFile())。如果不停的要求网络数据,这个缓存文件夹将无穷制的增大,终究到达SD卡容量时,会产生没法写入的异常(由于存储空间满了)。
这个问题的确之前没有想到,当时也没说出怎样回事。回家了赶快又看了看代码才知道,原来 Volley 斟酌过这个问题(汗!想一想也是)
翻看代码DiskBasedCache#pruneIfNeeded()
上一篇 alsa 驱动介绍