22

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 的值被更新,它直到应用程序重新启动才会反映出来。

4

2 回答 2

22

Commit()是瞬时的,但执行磁盘写入。如果你在 ui 线程上,你应该调用apply()它是异步的。

于 2013-03-11T09:51:55.200 回答
15

apply() - 返回void

apply() 是在 2.3 中添加的,它保存而不返回指示成功或失败的布尔值。

commit() - 返回布尔值。

如果保存有效, commit()返回 true,否则返回 false。apply()被添加是因为 android 开发团队注意到大多数人没有注意到返回值,所以 apply 更快。

您可以参考以下链接

Shared Preference 中的 commit() 和 apply() 有什么区别

于 2013-03-11T09:55:31.617 回答