【发布时间】:2011-08-23 01:44:26
【问题描述】:
我在我的安卓应用中使用SharedPreferences。我正在使用共享偏好中的commit() 和apply() 方法。当我使用 AVD 2.3 时,它没有显示错误,但是当我在 AVD 2.1 中运行代码时,apply() 方法显示错误。
那么这两者有什么区别呢?并且只使用commit() 可以毫无问题地存储偏好值吗?
【问题讨论】:
-
这是一岁了,但我还是要评论它,虽然它可能很明显,但没有一个答案表明这一点:
apply()将异步执行磁盘 I/O 而commit()是同步的。所以你真的不应该从 UI 线程调用commit()。 -
注意,当多个 SharedPreferences.Editor 对象在使用时,最后一个调用
apply()的对象获胜。因此,如果您确保您的应用程序只使用一个 SharedPreferences.Editor,您可以安全地使用apply()代替commit()。 -
根据 Android Studio Lint 警告:commit() 将立即同步保存数据。但是, apply() 将异步保存它(在后台),从而提高一些性能。这就是为什么如果你不关心它的返回类型(如果数据保存成功与否), apply() 优于 commit()。
-
有没有办法在使用
commit()时禁用Lint警告?