Android入門教程 | SharedPreferences 簡介
有時候我們想在應用中儲存一些資料。比如一些配置資訊。 例如儲存int,float,boolean,字串這類的資料。
寫檔案可能會比較繁瑣。需要自己實現檔案讀寫操作,定義資料存放結構。 對於這些簡單的資料,我們可以用 SharedPreferences (下文或簡稱sp)來進行儲存。
sp 使用的是 key-value 型別的資料結構。之前接觸到的 json格式也是 key-value 型別的。
存資料
第一步是獲取到一個 SharedPreferences 物件。在Activity中,可以呼叫
getSharedPreferences(String name, int mode)
方法。需要傳入這個sp的名字。
private static final String SP_1 = "sp_1";getSharedPreferences(SP_1, Context.MODE_PRIVATE)
存入各項資料。int有對應的
putInt
方法。同理,boolean、float、long、String、StringSet都有對應的put方法。 也簡寫為
putXxx
方法。
private void saveParams() { Set<String> set = new HashSet<>(); set.add("R"); set.add("u"); set.add("s"); set.add("t"); getSharedPreferences(SP_1, Context.MODE_PRIVATE).edit() .putInt(K_1, 1000) .putBoolean(K_2, true) .putFloat(K_3, 3.14159f) .putLong(K_4, System.currentTimeMillis()) .putString(K_5, "RustFisher") .putStringSet(K_6, set) .apply(); }
最後呼叫
apply()
方法,把資料寫入。 注意
apply()
方法,它並不保證立刻把資料寫入。它是一個非同步的方法。
而
commit()
是一個同步方法。它會在當前執行緒立刻執行。
官方推薦使用
apply()
來儲存資訊。
執行到機器上。如果資料儲存成功,在as的Device File Explorer皮膚中,我們可以找到檔案
/data/data/com.rustfisher.tutorial2020/shared_prefs/sp_1.xml
。
使用sp,會在應用內部的
shared_prefs
目錄建立xml檔案。
執行示例工程,我們可以看到
shared_prefs
目錄有別的庫建立的sp檔案。 例如
BuglySdkInfos.xml
或
x5_proxy_setting.xml
等等。
<pre id="__code_2" style="box-sizing: inherit; color: var(--md-code-fg-color); font-feature-settings: "kern"; font-family: "Roboto Mono", SFMono-Regular, Consolas, Menlo, monospace; direction: ltr; position: relative; margin: 1em 0px; line-height: 1.4;">`<?xml version='1.0' encoding='utf-8' standalone='yes' ?><map> <int name="k1" value="1000" /> <boolean name="k2" value="true" /> <float name="k3" value="3.14159" /> <long name="k4" value="1605628186953" /> <string name="k5">RustFisher</string> <set name="k6"> <string>R</string> <string>s</string> <string>t</string> <string>u</string> </set></map>
可看出它儲存使用的是xml檔案,外圍標籤是
<map>
。
讀資料
存入資料後,我們可以把資料讀出來。和
putXxx
方法類似,sp提供了
getXxx
方法。
例如
int getInt(String key, int defValue);
方法。 後面的defValue是預設值。如果這個key沒有對應的int,則返回預設值defValue。
- getInt
- getBoolean
- getFloat
- getLong
- getString
- getStringSet
下面程式碼是把資料讀出,並且顯示出來。
private void readParams() { SharedPreferences sp = getSharedPreferences(SP_1, Context.MODE_PRIVATE); StringBuilder sb = new StringBuilder(); sb.append(K_1).append(": ").append(sp.getInt(K_1, -1)); sb.append("\n").append(K_2).append(": ").append(sp.getBoolean(K_2, false)); sb.append("\n").append(K_3).append(": ").append(sp.getFloat(K_3, -1)); sb.append("\n").append(K_4).append(": ").append(sp.getLong(K_4, -1)); sb.append("\n").append(K_5).append(": ").append(sp.getString(K_5, "none")); sb.append("\n").append(K_6).append(": ").append(sp.getStringSet(K_6, null)); mTv1.setText(sb.toString()); }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008155/viewspace-2847755/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android入門教程 | TextView簡介(寬高、文字、間距)AndroidTextView
- Android入門教程 | AsyncTask 使用介紹Android
- Flutter入門教程(一)Flutter簡介Flutter
- gitbook 入門教程之 gitbook 簡介Git
- 《MySQL 入門教程》第 01 篇 MySQL 簡介MySql
- 2021 Duilib最新入門教程(一)Duilib簡介UI
- Android入門教程 | mmap 檔案對映介紹Android
- Android入門教程 | RecyclerView使用入門AndroidView
- Android入門教程 |res資源目錄簡介與shape的繪製和使用Android
- Android入門教程 | Kotlin協程入門AndroidKotlin
- Redis 入門 - 簡介Redis
- GraphQL 入門簡介
- ElasticSearch 入門簡介Elasticsearch
- CSS 入門簡介CSS
- Fiddler 入門簡介
- Kubernetes入門簡介
- ElasticSearch入門簡介Elasticsearch
- Docker入門簡介Docker
- 【Linux入門教程】1 簡介、檔案管理、目錄Linux
- Android 混淆簡單入門Android
- 小白入門 - PHP簡介PHP
- 【Android開發入門教程】三.Activity入門指南!Android
- Android入門教程 | DialogFragment 的使用AndroidFragment
- GraphQL 快速入門【1】簡介
- phyon快速入門(python簡介)Python
- Azure Terraform(一)入門簡介ORM
- Android SharedPreferences最佳實踐Android
- 簡單的 Go 入門教程Go
- Android入門教程 | 多執行緒Android執行緒
- Android入門教程 | Fragment 基礎概念AndroidFragment
- Android入門教程 | DrawerLayout 側滑欄Android
- Android入門教程 | RecyclerView實際使用AndroidView
- Android入門教程 | EditText 使用者輸入Android
- 《Flink入門與實戰》簡介
- Azure Storage 系列(一)入門簡介
- Azure Data Factory(一)入門簡介
- Azure Key Vault(二)- 入門簡介
- Python 入門系列 —— 1. 簡介Python