在Android共享首选项中提交和应用之间的区别

2022-09-02 01:05:33

共享首选项用于在 Android 中保存应用程序数据。

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

正如安卓图书馆中提到的:

public abstarct void apply():

与提交()不同,commit()将其首选项同步写出到持久性存储,apply()立即将其更改提交到内存中的共享首选项,但启动异步提交到磁盘,并且您不会收到任何失败的通知。如果此 SharedPreferences 上的另一个编辑器在 apply() 仍处于未完成状态时执行常规 commit(),则 commit() 将阻塞,直到所有异步提交以及提交本身都完成。

public abstract boolean commit ():

将首选项更改从此编辑器提交回它正在编辑的共享首选项对象。这会以原子方式执行请求的修改,替换当前共享首选项中的任何内容。

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

如果我需要在下一个即时活动中使用相同的共享首选项值,我应该使用哪一个?正如我所看到的,如果更新了首选项的值,则在重新启动应用程序之前,它不会反映出来。


答案 1

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


答案 2

apply() - 返回 void

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

commit() - 返回布尔值。

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

您可以参考下面的链接

共享首选项中的 commit() 和 apply() 之间有什么区别


推荐