繁体   English   中英

如何更改共享首选项中的值

[英]How to change values in the shared preference

我创建了一个使用共享首选项的应用程序,以便用户登录。 用户的密码保存在首选项中。 我的问题是,如果用户想要更改他/她的密码,如何更改首选项中的密码?

SharedPreferences prefs = ... // you already know how to use prefs and have one of this objects
Editor editor = prefs.edit();
editor.putString("password", "new value");
editor.apply();

使用apply()而不是commit()

建议您使用Editor.apply()而不是commit()因为apply()在后台异步工作,因此不太可能出现ANR(如果有的话)。

getSharedPreferences("FILE_NAME", 0 /*FILE_MODE*/)
     .edit()
     .putString("password", "new value")
     .apply();

文档提到apply()

将您的首选项更改从此编辑器返回到它正在编辑的SharedPreferences对象。 这以原子方式执行请求的修改,替换SharedPreferences中当前的任何内容。

请注意,当两个编辑者同时修改首选项时,最后一个编辑应用获胜。

与commit()同步地将其首选项写入持久存储,apply()会立即将其更改提交到内存中的SharedPreferences,但会启动异步提交到磁盘,并且不会通知您任何失败。 如果此SharedPreferences上的另一个编辑器在apply()尚未完成时执行常规commit(),则commit()将阻塞,直到完成所有异步提交以及提交本身。

由于SharedPreferences实例是进程中的单例,因此如果您已经忽略了返回值,则可以使用apply()替换commit()的任何实例。

您无需担心Android组件生命周期及其与apply()写入磁盘的交互。 该框架确保在切换状态之前完成apply()的飞行中磁盘写入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM