為應(yīng)用添加數(shù)據(jù)持久存儲功能主要涉及到兩大處理工程:
- 將數(shù)據(jù)保存到文件系統(tǒng)
- 應(yīng)用啟動時重新加載保存的數(shù)據(jù).
保存數(shù)據(jù)時,首先將數(shù)據(jù)轉(zhuǎn)換成可保存的格式,然后將數(shù)據(jù)寫入文件;
讀取文件時,則剛好相反.首先從文件中讀取格式化的數(shù)據(jù),然后將其解析為應(yīng)用所需的內(nèi)容.
什么時候保存數(shù)合適呢?
適用于移動應(yīng)用的一個普遍規(guī)則是:盡可能頻繁的保存數(shù)據(jù),尤其是用戶數(shù)據(jù)修改行為發(fā)生時.如果數(shù)據(jù)
保存過于頻繁,應(yīng)注意不要拖慢應(yīng)用的運行,影響到用戶的使用體驗.我們的代碼中,如果數(shù)據(jù)只要有更新,
都是重新將全部數(shù)據(jù)寫入文件中.考慮到應(yīng)用的規(guī)模,數(shù)據(jù)量小的時候這樣做不會太耗時.然而,對于超頻繁
數(shù)據(jù)保存的應(yīng)用,應(yīng)考慮采用某種方式只保存修改過的數(shù)據(jù),而不是每次都保存所有數(shù)據(jù),比如說使用SQLite
等.
選擇內(nèi)部存儲還是外部存儲
所有的Android設(shè)備都將文件存儲區(qū)域分為兩部分:內(nèi)部存儲和外部存儲。這種命名來源于早期的Android系統(tǒng),當時大部分的設(shè)備都有一個內(nèi)置的不可變的內(nèi)存(內(nèi)部存儲),另外還有一個可移除的存儲介質(zhì),如SD卡(外部存儲),后來即使設(shè)備沒有可移除的存儲介質(zhì)了,依然習(xí)慣性地將永久存儲空間劃分為“內(nèi)部”和“外部”,并且無論外部存儲是否可以移除,這兩部分存儲空間的API行為都是一樣的。
內(nèi)部存儲
1.總是可用的
2.內(nèi)部存儲空間內(nèi)的文件默認只有你的App可以訪問
3.當用戶卸載了你的App,系統(tǒng)從內(nèi)部存儲空間中移除所有你的App相關(guān)的文件
當你希望用戶和其他App都不能訪問你的文件時,內(nèi)部存儲是最好的選擇。
外部存儲
1.并非總是可用的,因為用戶可能將外部存儲作為USB存儲,某些情況下甚至?xí)脑O(shè)備上移除外部存儲
2.它是大家都可以訪問的,存儲在這里的文件可以被其他應(yīng)用程序訪問
3.當用戶卸載了你的App,系統(tǒng)僅僅會移除存儲在通過 getExternalFilesDir()獲取到的路徑中的該App相關(guān)的文件
當你的文件不需要訪問限制,或者你想將文件分享給其他的App,或者允許用戶通過電腦來訪問它,那么外部存儲是最好的選擇。。