可以在同一活动/片段中多次使用SharedPreferences.Editor.commit()

时间:2014-01-28 19:38:32

标签: android sharedpreferences

所以这里的人是问题,我抬头看着这个

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()用法确认。*

2 个答案:

答案 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();
    }
}