小编典典

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

java

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


阅读 214

收藏
2020-11-19

共1个答案

小编典典

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

2020-11-19