SharedPreferences用于在Android中保存应用程序数据。
commit()和apply()两者都用来保存在共享偏好的变化。
commit()
apply()
如Android库中所述:
public abstarct void apply():
与commit()将其首选项同步写到持久性存储中的方式不同,apply()立即将其更改提交到内存中的SharedPreferences,但是启动对磁盘的异步提交,并且不会收到任何故障通知。如果此SharedPreferences上的另一个编辑器在apply()仍未完成的情况下执行常规commit(),则commit()将阻塞,直到所有异步提交以及提交本身为止。
public abstract boolean commit ():
提交您的首选项更改,从此编辑器回到正在编辑的SharedPreferences对象。这将自动执行所请求的修改,从而替换SharedPreferences中当前存在的任何内容。
这是否意味着commit()与相比,所做的更改是即时的apply()?哪一个更好?
如果在下一个即时活动中需要使用相同的共享首选项值,应该使用哪个?正如我所看到的,如果Preference的值已更新,则在应用程序重新启动之前它不会得到反映。
Commit()是瞬时的,但执行磁盘写入。如果您在ui线程上,则应调用apply()异步线程。
Commit()