首页 文章

Android SharedPreferences中提交和应用之间的区别[重复]

提问于
浏览
20

这个问题在这里已有答案:

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

  • 13

    apply() - 返回 void

    apply() was added in 2.3 ,它 saves without returning a boolean indicating success or failure.

    commit() - 返回 boolean 值 .

    如果保存有效,则 commit() 返回true,否则返回false . apply() 被添加,因为Android开发团队注意到大多数没有人注意到返回值,因此应用更快 .

    您可以参考以下链接

    What's the difference between commit() and apply() in Shared Preference

  • 21

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

相关问题