| 知乎专栏 |
目录
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>