临时存储 SharedPreferences

注意:SharedPreferences 不是内存存储,实际持久化保存在本地XML文件,应用卸载数据才会清除,适合保存简单键值对:配置、开关、计数、登录状态等。

知识点

  1. GetSharedPreferences() 获取偏好文件实例
  2. 调用 .Edit() 拿到 ISharedPreferencesEditor 编辑器对象
  3. 使用 PutXXX() 系列方法写入数据(PutInt、PutString、PutBool)
  4. 使用 GetXXX() 系列方法读取数据,第二个参数为取不到值时的默认值
  5. 调用 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)

注意

  1. 必须有 Apply() / Commit(),不提交数据不会持久保存!
    • Apply():异步提交,推荐使用,不会阻塞UI线程
    • Commit():同步提交,返回bool结果,会阻塞主线程
  2. FileCreationMode.Private:只有当前应用能够读写该配置文件
  3. 支持类型:intstringboolfloatstring[]不能直接存对象、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)

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注