我的问题非常简单,但我没有找到答案(对不起,如果它在某个地方而且没有找到答案)。
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>
答案 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的最佳方式,请访问此网站:
还有一点文档: