所以这里的人是问题,我抬头看着这个
http://developer.android.com/reference/android/content/SharedPreferences.Editor.html#commit%28%29
它提到“请注意,当两个编辑器同时修改首选项时,最后一个调用commit会获胜。”
说我的活动是这样的:
SharedPreferences.Editor editor();
onCreate(....)
{
//start the instance of editor
......
if(condition1)
editor.put...
editor.commit()
}
onPause()
{
if(condition1)
{
editor.commit()
}
}
这会有用吗?因为在我的应用程序中,我必须在线时存储用户凭证,并且在离线时(即条件1),不记录用户ID的几个提交回服务器。 onPause是我这样做的地方。所以任何人都可以确认这一点。感谢。
** putBoolean()似乎工作正常。这是一个巨大的代码片段,所以我可能在某处使用用户凭证逻辑做错了。所以,我只想用editor.commit()用法确认。*
答案 0 :(得分:2)
如果你有一个类成员SharedPreferences.Editor编辑器,那么是的,你可以在全班使用它而不用担心。另外,请查看方法签名:
public abstract boolean commit()
您可以检查提交结果,以确保已成功写入值。
boolean result = editor.commit();
答案 1 :(得分:1)
是的,在大多数情况下,这将适用于您提供的示例(按照正确的顺序工作)。如果您想绝对确保所有修改都已执行,那么您可以同步它们。
例如:
private void someSaveMethod() {
synchronized(this) {
//TODO perform your retrieval of the PreferencesEditor
editor.commit();
}
}