摘要
“基礎 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 驅動介紹