| 知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
目錄
SharedPreferences是Android中的數據存儲技術,常用來存儲一些輕量級的數據。
實際上SharedPreferences是 NoSQL 資料庫,用於處理的key-value鍵值對存儲,類似Windows 系統的註冊表,Linux 系統裡的 Berkeley DB (bdb) 以及衍生出的 dba,mdb 這類 hash 表資料庫。
Context.MODE_PRIVATE:為預設操作模式,代表該檔案是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容 Context.MODE_APPEND:模式會檢查檔案是否存在,存在就往檔案追加內容,否則就創建新檔案. Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該檔案. MODE_WORLD_READABLE:表示當前檔案可以被其他應用讀取. MODE_WORLD_WRITEABLE:表示當前檔案可以被其他應用寫入.
Button buttonPut = (Button) findViewById(R.id.buttonPut);
buttonPut.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//實例化SharedPreferences對象
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
//實例化SharedPreferences.Editor對象
SharedPreferences.Editor editor = sharedPreferences.edit();
//用putString的方法保存數據
editor.putString("name", "Neo");
editor.putString("nickname", "netkiller");
editor.putBoolean("sex", true);
editor.putInt("age", 30);
editor.putFloat("tall", 180.23f);
Set<String> books = new HashSet<String>();
books.add("Netkiller Linux 手札");
books.add("Netkiller Java 手札");
books.add("Netkiller Android 手札");
editor.putStringSet("books", books);
//提交當前數據
editor.commit();
}
});
Button buttonGet = (Button) findViewById(R.id.buttonGet);
buttonGet.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
//實例化SharedPreferences對象
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
//使用getString方法獲得value,
String name = sharedPreferences.getString("name", "");
String nickname = sharedPreferences.getString("nickname", "");
boolean sex = sharedPreferences.getBoolean("sex", false);
int age = sharedPreferences.getInt("age", 0);
float tall = sharedPreferences.getFloat("tall", 0f);
Set<String> books = sharedPreferences.getStringSet("books", null);
Log.i("SharedPreferences", String.format("%s,%s,%s,%s,%s,%s", name, nickname, sex, age, tall, books.toString()));
}
});
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
if (sharedPreferences.contains("nickname")) {
Log.i("SharedPreferences", sharedPreferences.getString("nickname", ""));
}else{
Log.i("SharedPreferences", "key: nickname 不存在");
}
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove("nickname");
editor.commit();
Log.i("SharedPreferences", sharedPreferences.getAll().toString());
SharedPreferences sharedPreferences = getSharedPreferences("test", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
editor.commit();
Log.i("SharedPreferences", sharedPreferences.getAll().toString());
SharedPreferences 的數據存儲再一個 xml 檔案中,他的地址是:
//<package name>應替換成應用的包名, <name>
File xmlFile = new File("/data/data/<package name>/shared_prefs/<name>.xml");
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <string name="name">陳景峰</string> <string name="nickname">netkiller</string> <int name="age" value="30" /> </map>