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

时间:2011-01-28 03:06:46

标签: java android sharedpreferences

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

2 个答案:

答案 0 :(得分:45)

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();

答案 1 :(得分:5)

使用$("#TempDataDiv").html($("#chartDiv").html() + $("#chartDiv").html()); var useHeight = $("#chartDiv").prop('scrollHeight'); html2canvas($("#chartDiv"), { height: useHeight, onrendered: function(canvas) { imageData = canvas.toDataURL(); $("#TempDataDiv").html(""); var win = window.open(); win.document.write("<br><img src='" + imageData + "'/>"); win.print(); } }); 代替apply()

建议您使用commit()代替Editor.apply(),因为commit()在后​​台异步工作,因此不太可能存在ANR,因为那(如果有的话)。

apply()

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

  

将您的偏好设置更改从此编辑器返回到   它正在编辑的SharedPreferences对象。这原子地执行   要求修改,替换当前的任何内容   SharedPreferences。

     

请注意,当两位编辑同时修改首选项时,   最后一个叫申请获胜。

     

与commit()不同,后者将其首选项写入持久性   同步存储,apply()将其更改提交到内存中   SharedPreferences立即启动异步提交   磁盘,您不会收到任何故障通知。如果是其他编辑   这个SharedPreferences在apply()时执行常规commit()   仍然未完成,commit()将阻塞,直到所有异步提交为止   完成以及提交本身。

     

由于SharedPreferences实例是一个进程中的单例,它就是   如果你是的话,可以使用apply()替换任何commit()实例   已经忽略了返回值。

     

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