1. 程式人生 > 其它 >Android學習路線_入門篇(八)資料持久化之SharedPreferences

Android學習路線_入門篇(八)資料持久化之SharedPreferences

技術標籤:Android學習路線android

資料持久化是保證資料在程式銷燬、裝置關機後仍然不會丟失的操作,Android系統上主要有三種方式。第一個先看看SharedPreferences,一個輕量級的儲存類,特別適合用於儲存配置引數,它使用鍵值對的方式來儲存資料,最終的檔案存放位置在/data/data/<packagename>/shared_prefs/目錄下。

本文已收錄至☞Android學習路線_梳理
上一篇☞Android學習路線_入門篇(七)四大元件之ContentProvider

1. SharedPreferences適用範圍

SharedPreferences一個輕量級的儲存類,特別適合用於儲存配置引數,它使用鍵值對的方式來儲存資料,檔案儲存的資料格式是xml,支援的資料型別包括int、boolean、float、long、String、StringSet。

根據SharedPreferences的上述性質,通常將其用於儲存簡單的設定資料、個性化配置、本機使用者資訊、口令、token之類的簡單資料。

2. 獲取SharedPreferences物件的方式

在使用SharedPreferences的時候,一定要先獲取SharedPreferences的物件,並不是手動new一個SharedPreferences物件。系統提供的獲取方式一共有三種:

  1. Context類中的getSharedPreferences()方法
    此方法接收兩個引數,第一個用於指定SharedPreferences檔案的名稱,如果指定的檔案不存在則會建立一個。第二個引數用於指定操作模式,目前只有MODE_PRIVATE一種可選,預設,和直接傳入0效果相同,表示只有當前的應用程式才可以對這個SharedPreferences檔案進行讀寫。

  2. Activity類中的getPreferences()方法
    這個方法和第一個相似,不過它只接收一個操作模式引數,因為使用這個方法會自動將當前活動的類名作為SharedPreferences檔名。

  3. PreferencesManager類中的getDefaultSharedPreferences()方法
    這是一個靜態方法,它只接收一個Context引數,並自動使用當前程式的包名作為字首來命名SharedPreferences檔案。

根據介紹,相信你已經發現了,Context類中的getSharedPreferences()方法最為靈活,因此這個方式也是最常使用的。

3. 使用SharedPreferences讀取資料

在使用前需要先獲取SharedPreferences物件,我們選用Context類中的getSharedPreferences()方法,使用Application去獲取是較為穩妥的方式。

獲取SharedPreferences物件之後,可以通過SharedPreferences的getInt()getBoolean()getFloat()getLong()getString()getStringSet()獲取不同型別的資料,這些方法入參均為兩個,第一個為資料的鍵Key,Key為String型別,第二個為預設值DefValue,獲取失敗時方法會返回傳入的預設值。

示例:

SharedPreferences pref = context.getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","");

4. 向SharedPreferences寫入資料

在使用前需要先獲取SharedPreferences物件,我們選用Context類中的getSharedPreferences()方法,使用Application去獲取是較為穩妥的方式。

獲取SharedPreferences物件之後,通過SharedPreferences的edit()方法獲取Editor編輯器,此時通過Editor編輯器才能向SharedPreferences物件中寫入資料。寫入資料的方法和獲取資料類似,通過SharedPreferences的putInt()putBoolean()putFloat()putLong()putString()putStringSet()寫入不同型別的資料,這些方法入參均為兩個,第一個為資料的鍵Key,第二個為要寫入的值Value。

寫入資料後,還需要進行提交才能生效。提交的方式有兩種:

  1. Editor物件的commit()方法
    這個方法在當前執行緒執行,會對當前執行緒造成阻塞,檔案寫入完成之後才會執行後續操作。

  2. Editor物件的apply()方法
    這個方法會新建子執行緒執行,對當前執行緒無影響,但每次系統有Activity切換時都會等待檔案寫入完成,所以無節制的apply也對APP的流暢性有影響,多個鍵值對的寫入可以先完成全部的put操作後再最後執行apply。

示例:

SharedPreferences.Editor editor = context.getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","小明");
editor.apply();

完畢

今天的分享就到這裡,文章多有不足,各位小夥伴有什麼想法可以直接評論或是私信,要是對你有所幫助就給我一個贊吧,喜歡我的小夥伴可以關注我哦~

本文已收錄至☞Android學習路線_梳理
上一篇☞Android學習路線_入門篇(七)四大元件之ContentProvider

支援我的小夥伴們可以微信搜尋“Android思維庫”,或者微信掃描下方二維碼,關注我的公眾號,每天都會推送新知識~