Android SharedPreferences中提交和应用之间的区别

时间:2013-03-11 09:49:05

标签: java android sharedpreferences

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的值,则在重新启动应用程序之前不会反映它。

2 个答案:

答案 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