持久化技術
資料持久化就是指将記憶體中的瞬時資料儲存到儲存設備中,android中主要提供了三種方式:檔案存儲,SharedPrefences存儲以及資料庫存儲
檔案存儲
簡介
檔案存儲不對存儲的内容進行任何的格式化處理,所有資料都是原封不動的儲存到檔案當中,比較适合存儲一些簡單的文本資料或二進制資料
内容
存儲
- 使用Context類的openFileOutput()方法獲得一個FileOutputStream對象,然後使用java的IO流将資料存儲到指定的檔案中
- 該方法接收兩個參數:第一個參數是檔案名,第二個參數是檔案的操作模式。
檔案名不可以包含路徑,所有檔案都是預設存儲到/data/data/< package name>files/目錄下的。
檔案操作模式有兩種可以選:MODE_PRIVATE(預設的操作模式,若檔案存在,則覆寫原檔案中的内容)和MODE_APPEND(若檔案存在,則追加寫入,若不存在,則建立新檔案)
讀取
- 從檔案中讀取資料:使用Context類的openFileInput()方法獲得FileInputStream對象,然後使用java的IO流進行檔案讀取。
- 該方法隻接受一個參數,即要讀取的檔案名,然後系統會自動到/data/data/< package name>files/檔案下加載這個問價,并傳回一個FileInputStream對象,然後通過java的IO流将資料讀取出來。
SharedPreferences存儲
簡介
SharedPreferences使用鍵值對的方式來存儲資料,當儲存一條資料時需要給這條資料提供一個鍵,然後在讀取資料時通過鍵将對應的值讀取出來。SharedPreferences還支援多種不同的資料類型存儲
内容
- 要使用SharedPreferences來存儲資料,必須先擷取到SharedPreferences對象。android中提供了三種方法擷取SharedPreferences對象:
- Context類中的getSharedPreferences()方法
- 此方法接受兩個參數:第一個參數指定SharedPreferences檔案的名稱,第二個參數用于指定操作模式,目前隻有MODE_PRIVATE這一種模式,表示隻有目前的應用程式才可以對這個SharedPreferences檔案進行讀寫
- Activity類中的getPreferences()方法
- 該方法和Context類的getSharedPreferences()方法類似,但他隻接受一個操作模式參數,此方法會自動将目前活動的類名作為SharedPreferences的檔案名
- PreferenceManager類中的getDefaultSharedPreferences()方法
- 這是一個靜态方法,它接受一個Context參數,并自動使用目前應用程式的包名作為字首來命名SharedPreferences檔案。
- Context類中的getSharedPreferences()方法
- 向SharedPreferences檔案中存儲資料,主要分為三步:
- 調用SharedPreferences對象的edit()方法來擷取一個SharedPreferences.Editor對象
- 向SharedPreferences.Editor對象中調用putXxx()方法添加資料
- 調用apply()方法将添加的資料送出,進而完成資料存儲操作
- 從SharedPreferences中讀取資料,SharedPreferences對象中每種get方法都對應了SharedPreferences.Editor中的一種put方法。get方法接受兩個參數,第一個參數是鍵,第二個參數是預設值,即當傳入的鍵找不到對應的值時會傳回該值。
SharedPreferences.Editor editor = getSharedPreferences("date", MODE_PRIVATE).edit(); editor.putInt("age", 19); editor.apply(); --------------------- SharedPreferences sharedPreferences = getSharedPreferences("date", MODE_PRIVATE).edit(); Log.d("MainActivity", sharedPreferences.getInt("age", 0));