持久化的五種方式
安卓有五種方式實現(xiàn)持久化,內(nèi)部存儲、網(wǎng)絡存儲、SharedPreferences、SQLite、外部存儲(SD卡)。
SharedPreferences
是用鍵值對的形式來存儲數(shù)據(jù)的,底層上采用XML文件來存儲鍵值對,一般用來存少量簡單類型的數(shù)據(jù),比如幾個字符串什么的。如果想要用SharedPreferences存儲的話,先調(diào)用getSharedPreferences()獲取一個SharedPreferences對象,然后調(diào)用該對象的edit(),再調(diào)用putString()來輸入要保存的值,再commit()就結束存儲了。
要讀取的話就獲得SharedPreferences對象后調(diào)用getString()來讀取。
SharedPreferences不能在多進程的時候使用,因為雖然他是文件中的一種,而IPC又包括了文件共享這一形式,但是系統(tǒng)對于他的讀寫有一定的緩存機制,所以在面對高并發(fā)的場景的時候,他的讀寫就不可靠了,就會大概率丟失數(shù)據(jù),所以最好不要用SharedPreferences。
SQLite數(shù)據(jù)庫
SQLite是一種微型數(shù)據(jù)庫,可以用來存儲數(shù)據(jù)。安卓提供對SQLite的完全支持,應用程序內(nèi)的所有類都可以通過名稱訪問任何數(shù)據(jù)庫,但是應用程序之外的不能,要用contentprovider來共享數(shù)據(jù)。
SQLiteOpenHelper類來幫助我們實現(xiàn)數(shù)據(jù)庫的創(chuàng)建和增刪改查。
- 數(shù)據(jù)庫的創(chuàng)建:OnCreate(),getReadableDatabase(),getWritableDatabase()這三個方法來創(chuàng)建數(shù)據(jù)庫,第一次創(chuàng)建都會回調(diào)OnCreate方法。
- 數(shù)據(jù)庫版本更新:OnUpgrade(),來實現(xiàn)版本號的更新。
- 增刪改:這三個先調(diào)用getWritableDatabase()獲取一個可寫的數(shù)據(jù)庫,然后可以用execSQL()來輸入對應的sql語句來運行你的功能,或者使用提供的API(insert(),delete(),update()),如果用insert等功能需要很多參數(shù)的話,可以直接用execSQL(),輸入查詢的sql語句和參數(shù)集,就不會像insert()那樣需要很多參數(shù)。
- 查:先調(diào)用getReadableDatabase()來得到一個可讀的數(shù)據(jù)庫,然后query()或者rawQuery()。
- 關閉數(shù)據(jù)庫:完成對數(shù)據(jù)庫的操作后要用close()來結束當前數(shù)據(jù)庫的連接
- 刪除數(shù)據(jù)庫:deleteDatabase()可以刪除指定的數(shù)據(jù)庫。