Android SharedPreferences中提交和应用的区别

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

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

正如Android库中所提到的:

 public abstarct void apply(): 

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

 public abstract boolean commit (): 

将您的首选项更改从此编辑器提交到正在编辑的SharedPreferences对象。 这自动执行所请求的修改,replaceSharedPreferences中当前的任何内容。

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

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

Solutions Collecting From Web of "Android SharedPreferences中提交和应用的区别"

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

apply() – 返回void

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

commit() – 返回布尔值。

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

你可以参考下面的链接

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