注意:SharedPreferences 不是内存存储,实际持久化保存在本地XML文件,应用卸载数据才会清除,适合保存简单键值对:配置、开关、计数、登录状态等。
知识点
GetSharedPreferences()获取偏好文件实例- 调用
.Edit()拿到ISharedPreferencesEditor编辑器对象 - 使用
PutXXX()系列方法写入数据(PutInt、PutString、PutBool) - 使用
GetXXX()系列方法读取数据,第二个参数为取不到值时的默认值 - 调用
Apply()/Commit()提交修改,数据才真正保存
示例代码
private void Btn_Click(object sender, EventArgs e)
{
// 获取SharedPreferences实例,文件名OnPhoneData,私有模式仅本App可访问
ISharedPreferences userPreferences = GetSharedPreferences("OnPhoneData", FileCreationMode.Private);
// 获取编辑器
ISharedPreferencesEditor userPreferencesEditor = userPreferences.Edit();
// 读取int,key不存在返回默认值0
var count = userPreferences.GetInt("some_counter", 0);
// 计数+1,写入
userPreferencesEditor.PutInt("some_counter", count + 1);
// 保存
userPreferencesEditor.Apply();
Console.WriteLine(count);
}Code language: PHP (php)
注意
- 必须有
Apply()/Commit(),不提交数据不会持久保存!Apply():异步提交,推荐使用,不会阻塞UI线程Commit():同步提交,返回bool结果,会阻塞主线程
FileCreationMode.Private:只有当前应用能够读写该配置文件- 支持类型:
int、string、bool、float、string[];不能直接存对象、List集合,对象需要序列化为Json字符串存储。
读取字符串示例
//读
string name = userPreferences.GetString("user_name", "");
//写
userPreferencesEditor.PutString("user_name", "Jack");
userPreferencesEditor.Apply();Code language: JavaScript (javascript)
删除数据
userPreferencesEditor.Remove("some_counter");
userPreferencesEditor.Apply();Code language: CSS (css)
Previous: 播放视频(VideoView)
Next: 文件读写 Xamarin.Android