SharedPreferences用于在Android中保存应用程序数据。
commit()
和apply()
都用于保存共享偏好设置中的更改。
如Android库中所述:
public abstarct void apply():
与commit()不同,后者将其首选项写入持久性 同步存储,apply()将其更改提交到内存中 SharedPreferences立即启动异步提交 磁盘,您不会收到任何故障通知。如果是其他编辑 这个SharedPreferences在apply()时执行常规commit() 仍然未完成,commit()将阻塞,直到所有异步提交为止 完成以及提交本身。
public abstract boolean commit ():
将您的偏好设置更改从此编辑器返回到 它正在编辑的SharedPreferences对象。这原子地执行 要求修改,替换当前的任何内容 SharedPreferences。
这是否意味着commit()
所做的更改与apply()
相比是即时的?哪一个更好?
如果我需要在下一个立即活动中使用相同的共享偏好值,我应该使用哪一个?正如我所看到的,如果更新了Preference的值,则在重新启动应用程序之前不会反映它。
答案 0 :(得分:22)
Commit()
是即时的但执行磁盘写入。如果你在ui线程上,你应该调用异步的apply()
。
答案 1 :(得分:14)
apply() - 返回 void
在2.3 中添加了apply(),保存而不返回表示成功或失败的布尔值。
commit() - 返回布尔值值。
commit()如果保存有效则返回true,否则返回false。 apply()
被添加,因为android开发团队注意到大多数没有人注意到返回值,因此应用更快。
您可以参考以下链接
<强> What's the difference between commit() and apply() in Shared Preference 强>