【问题标题】:Difference Between commit and apply in Android SharedPreferences [duplicate]Android SharedPreferences中提交和应用之间的区别[重复]
【发布时间】:2013-02-26 10:40:33
【问题描述】:

SharedPreferences 用于在 Android 中保存应用程序数据。

commit()apply() 都用于保存共享首选项中的更改。

如 Android 库中所述:

public abstarct void apply():

与 commit() 不同,commit() 将其偏好写入持久化 同步存储,apply() 将其更改提交到内存中 SharedPreferences 立即但开始异步提交 磁盘,您将不会收到任何故障通知。如果另一个编辑 此 SharedPreferences 执行常规 commit() 而 apply() 是 仍然未完成,commit() 将阻塞,直到所有异步提交都完成 完成以及提交本身。

public abstract boolean commit ():

将您的首选项更改从该编辑器提交回 它正在编辑的 SharedPreferences 对象。这原子地执行 请求修改,替换当前在 共享首选项。

这是否意味着commit() 所做的更改与apply() 相比是即时的?哪个更好?

如果我需要在下一个即时活动中使用相同的共享偏好值,我应该使用哪一个?正如我所看到的,如果 Preference 的值被更新,它直到应用程序重新启动才会反映出来。

【问题讨论】:

    标签: java android sharedpreferences


    【解决方案1】:

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

    【讨论】:

    • 我不太明白UI线程的意思..!!到底是什么。我是新手。
    • UI 线程是设置布局和设置例如 onClick 监听器的主线程。
    • 正确,因此磁盘写入等耗时的操作会降低您的 UI 响应速度
    【解决方案2】:

    apply() - 返回 void

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

    commit() - 返回 boolean 值。

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

    您可以参考以下链接

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

    【讨论】:

      猜你喜欢
      • 2012-06-29
      • 1970-01-01
      • 2015-03-13
      • 2014-08-16
      • 2011-04-08
      • 2012-11-24
      • 2013-06-05
      • 2021-09-29
      • 2020-05-27
      相关资源
      最近更新 更多