持久化的五種方式
安卓有五種方式實(shí)現(xiàn)持久化,內(nèi)部存儲(chǔ)捌显、網(wǎng)絡(luò)存儲(chǔ)、SharedPreferences总寒、SQLite扶歪、外部存儲(chǔ)(SD卡)。
SharedPreferences
是用鍵值對的形式來存儲(chǔ)數(shù)據(jù)的摄闸,底層上采用XML文件來存儲(chǔ)鍵值對善镰,一般用來存少量簡單類型的數(shù)據(jù),比如幾個(gè)字符串什么的贪薪。如果想要用SharedPreferences存儲(chǔ)的話媳禁,先調(diào)用getSharedPreferences()獲取一個(gè)SharedPreferences對象,然后調(diào)用該對象的edit()画切,再調(diào)用putString()來輸入要保存的值竣稽,再commit()就結(jié)束存儲(chǔ)了。
要讀取的話就獲得SharedPreferences對象后調(diào)用getString()來讀取霍弹。
SharedPreferences不能在多進(jìn)程的時(shí)候使用毫别,因?yàn)殡m然他是文件中的一種,而IPC又包括了文件共享這一形式典格,但是系統(tǒng)對于他的讀寫有一定的緩存機(jī)制岛宦,所以在面對高并發(fā)的場景的時(shí)候,他的讀寫就不可靠了耍缴,就會(huì)大概率丟失數(shù)據(jù)砾肺,所以最好不要用SharedPreferences挽霉。
SQLite數(shù)據(jù)庫
SQLite是一種微型數(shù)據(jù)庫,可以用來存儲(chǔ)數(shù)據(jù)变汪。安卓提供對SQLite的完全支持侠坎,應(yīng)用程序內(nèi)的所有類都可以通過名稱訪問任何數(shù)據(jù)庫,但是應(yīng)用程序之外的不能裙盾,要用contentprovider來共享數(shù)據(jù)实胸。
SQLiteOpenHelper類來幫助我們實(shí)現(xiàn)數(shù)據(jù)庫的創(chuàng)建和增刪改查。
- 數(shù)據(jù)庫的創(chuàng)建:OnCreate()番官,getReadableDatabase()庐完,getWritableDatabase()這三個(gè)方法來創(chuàng)建數(shù)據(jù)庫,第一次創(chuàng)建都會(huì)回調(diào)OnCreate方法徘熔。
- 數(shù)據(jù)庫版本更新:OnUpgrade()门躯,來實(shí)現(xiàn)版本號(hào)的更新。
- 增刪改:這三個(gè)先調(diào)用getWritableDatabase()獲取一個(gè)可寫的數(shù)據(jù)庫近顷,然后可以用execSQL()來輸入對應(yīng)的sql語句來運(yùn)行你的功能生音,或者使用提供的API(insert(),delete()窒升,update()),如果用insert等功能需要很多參數(shù)的話慕匠,可以直接用execSQL()饱须,輸入查詢的sql語句和參數(shù)集,就不會(huì)像insert()那樣需要很多參數(shù)台谊。
- 查:先調(diào)用getReadableDatabase()來得到一個(gè)可讀的數(shù)據(jù)庫蓉媳,然后query()或者rawQuery()。
- 關(guān)閉數(shù)據(jù)庫:完成對數(shù)據(jù)庫的操作后要用close()來結(jié)束當(dāng)前數(shù)據(jù)庫的連接
- 刪除數(shù)據(jù)庫:deleteDatabase()可以刪除指定的數(shù)據(jù)庫锅铅。