sharedPreferences apply()保存上面的所有内容还是保存最后一个?这个怎么运作?

时间:2016-08-02 23:08:00

标签: java android sharedpreferences android-preferences preferences

我的问题非常简单,但我没有找到答案(对不起,如果它在某个地方而且没有找到答案)。

sharedpreferences.editor.apply()如何运作?

要清楚,我有这个代码,例如:

MainActivity.editor.putBoolean(somestring, someboolean);
MainActivity.editor.apply();
MainActivity.editor.putInt(somestring, someint);
MainActivity.editor.apply();
MainActivity.editor.putString(somestring,somestring);
MainActivity.editor.apply();
MainActivity.editor.putLong(somestring, somelong);
MainActivity.editor.apply();
MainActivity.editor.putLong(somestring, somelong);
MainActivity.editor.apply();
MainActivity.editor.putBoolean(somestring, someboolean);
MainActivity.editor.apply();

这适用于我的项目。但是使用上面这个或下面的表现是否更好?

MainActivity.editor.putBoolean(somestring, someboolean);
MainActivity.editor.putInt(somestring, someint);
MainActivity.editor.putString(somestring,somestring);
MainActivity.editor.putLong(somestring, somelong);
MainActivity.editor.putLong(somestring, somelong);
MainActivity.editor.putBoolean(somestring, someboolean);
MainActivity.editor.apply();

基本上,上面的代码是正确的吗?  是否适用于所有putSomething以上apply()仅适用于putSomething一个?{/ p>

4 个答案:

答案 0 :(得分:1)

apply vs commit

使用apply()和commit()

的主要区别

.apply()会保存您在后台线程中的更改。

.commit()会将您更改的内容保存在主线程中。

这两种方法会产生相同的结果。

答案 1 :(得分:0)

最后一个肯定。 apply()commit()都会保存所有更改。为什么你甚至想多次应用这些变化?虽然最后一个更适合性能,但您并不会注意到,因为apply()是一个同步。但是,不要做不必要的事情。但是commit()会降低性能,因为它不是aSync。

答案 2 :(得分:0)

调用apply()一次保存使用编辑器对象进行的所有更改。所以下面的代码是正确的。 =)

答案 3 :(得分:0)

上面的代码是最好的代码,方法apply()将保存所有SharedPreferences.Editor更改,并且每次都不需要调用它。

void apply()

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

请注意,当两个编辑者同时修改偏好时,最后一个编辑申请获胜。

如果您想了解使用SharedPreferences的最佳方式,请访问此网站:

Best Practices

还有一点文档:

Documentation