簡單易用的安卓SharedPreferences儲存(資料儲存系列)
theme: channing-cyan
本文正在參加「金石計劃 . 瓜分6萬現金大獎」
前言
本篇主要介紹本人在工作最常用的資料儲存方法——haredPreferences儲存,即sp儲存,該方式儲存比較方便,用於儲存使用者本地持久化資料,使用過程中也出現過一些不好解決的坑,但不可否認,如果需求有一些需要APP本地儲存的資料,我還是會首選sp儲存,畢竟寫起來很容易(工作開發的專案程式碼已經將其簡化封裝為工具類,只要寫key和set方法與get方法即可呼叫,所以感覺很方便)。
正篇
SharedPreferences儲存概述
該儲存方式是使用鍵值對(key-value)進行儲存資料,換而言之,當我們想用其儲存一條資料,需要給這條資料提供一個對應的鍵(key),然後在讀取資料的時候就可以通過這個鍵(key)將相應的值(value)取出。
該儲存方式支援多種不同的資料型別儲存:
如上面兩個圖所示,該方法支援以下幾種資料型別:\ 1.int(整型)\ 2.long(長整型)\ 3.float(浮點型)\ 4.String(字串)\ 5.Set<String>(字串集合)\ 存入以上對應的型別,我們在取出時也會獲得同樣型別的資料。
使用方法
儲存資料
首先,我們看看sp儲存的存資料方法:\
1.getSharedPreferences()方法
這個方法是Context類提供的,該方法的第一個引數可以用來指定檔名稱,名稱不存在就會建立一個,Sp儲存檔案存放地址為/data/data/< package name >/shared_prefs/目錄下;它的第二個引數則是用於指定操作模式,不過只有MODE_PRIVATE這個預設模式可用,等於直接傳入0,這個模式意思是隻有當前程式才可以對這個Sp檔案進行讀寫。
2.getPreferences()方法
這個方法是Activity類中提供的:
這個方法只有一個引數,即操作模式,而且該方法會將當前的Activity類名直接作為Sp檔名,其他都和getSharedPreferences()方法相似。
使用例項:
佈局中我們加一個按鈕
XML佈局:
```XML
<Button
android:id="@+id/saveButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:backgroundTint="@color/default_a"
android:text="@string/save_data"/>
然後在Activity中在按鈕的點選事件時使用Sp儲存存入元素:
Kotlin
class SharedPreferencesDemo : AppCompatActivity() {
lateinit var binding : ActivitySharedPreferencesDemoBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivitySharedPreferencesDemoBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.saveButton.setOnClickListener {
val editor = getSharedPreferences("data", Context.MODE_PRIVATE).edit()
editor.putString("name", "Tom")
editor.putInt("age", 18)
editor.putBoolean("married", false)
editor.apply()
}
//Demo
val edit = getPreferences(Context.MODE_PRIVATE).edit()
edit.putLong("id", 5555555)
edit.apply()
}
} ``` 我們執行程式,然後按一下按鈕:
接著我們就可以在裝置檔案管理器中找到data.xml的檔案:
這就表示存下來了。
Sp檔案讀取資料方法
儲存資料的時候我們用了putXXX()的方法,去儲存了key-value型資料,所以取資料更為簡單,就是直接去對應型別的getXXX()方法傳入對應的key即可以取出該型別的資料,當然為了在找不到儲存值時有對應的資料獲取,我們在getXXX()的第二個引數中傳入預設值,如下所示:
Kotlion
binding.restoreButton.setOnClickListener {
val prefs = getSharedPreferences("data", Context.MODE_PRIVATE)
val name = prefs.getString("name", "")
val age = prefs.getInt("age", 0)
val married = prefs.getBoolean("married", false)
Log.d("Main", "name is $name, age is $age, married is $married")
}
這樣我們就能取出我們儲存的資料,非常簡單好用。
總結
雖然Sp儲存現在已經有更好的技術去替換(MMKV),但Sp儲存的原理還是需要我們去了解的,當然,作為安卓資料儲存技術,它還是需要我們去熟練使用,這篇文章主要就是簡單的介紹了Sp儲存的基本使用方法,如果需要深入瞭解,還是去閱讀原始碼最好,此外,後面我也會去學習MMKV,雖然目前接觸專案還沒有使用。
- 安卓開發一年技術小結——安卓開發技術整理
- 安卓Kotlin開發學習——接著看高階函式
- 兔兔按鈕——安卓懸浮按鈕
- 兔兔進度條Plus——SeekBar充當Progress
- 安卓基礎開發——ReentrantLock的簡單使用
- 安卓開發基礎——使用RecyclerView
- 安卓開發基礎(Java)——TextView的使用
- 安卓開發基礎——弱引用的使用
- 安卓開發基礎——實現音訊檔案的播放
- 讓UI忙碌的安卓Lottie動畫渲染庫(二)
- 強大而靈活的RecyclerView Adapter——BRVAH(框架引入與BaseQuickAdapter使用篇)
- 安卓語言基礎之Kotlin的面向物件程式設計
- 安卓語言基礎之Kotlin高階函式——Lambda表示式(二)
- 大放光彩的安卓Jetpack元件-ViewModel(一)
- 安卓語言基礎之Kotlin高階函式——Lambda表示式(一)
- 安卓開發必備——build.gradle檔案初探(一)
- 安卓開發學Flutter——Dart語法的一些注意點(第二篇)
- 簡單易用的安卓SharedPreferences儲存(資料儲存系列)
- 安卓開發基礎技術——WebView載入網頁
- 原汁原味的安卓檔案儲存(資料儲存系列)