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的值被更新,直到应用程序重新启动才会被反映出来。

  • Android:复制/复制SharedPreferences
  • Android共享首选项不起作用
  • 保存在SharedPreferences中的用户设置在重新加载应用程序之间被删除或丢失
  • Android SharedPreferences,如何保存一个简单的intvariables
  • 如何在SharedPreferences中存储整数数组?
  • 如何检查SharedPreferences是否存在
  • 如果更改发生在单独的活动中,onSharedPreferenceChanged不会被触发?
  • SharedPreferences访问耗时?
  • Commit()是即时的,但执行磁盘写入。 如果你在ui线程上,你应该调用apply() ,这是asynchronous的。

    apply() – 返回void

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

    commit() – 返回布尔值。

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

    你可以参考下面的链接

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