3、SharedPreferences的apply()和commit()
从sdk9开始,SharedPreferences.Editor提供了apply()
方法替代commit()
。
commit()方法会同步地将偏好值直接写入持久化存储设备;不同的是,apply()方法会立即把修改内容提交到SharedPreferences内存缓存中,然后开始异步地将修改提交到存储设备上。apply()方法以避免在UI线程中执行向磁盘提交数据等耗时操作。
比较好的代码规范:
private void applyOrCommit(SharedPreferences.Editor editor) {
if (editor != null) {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
editor.apply();
} else {
editor.commit();
}
} catch (Throwable t) {
editor.commit();
}
}
}
当然也可以这样(个人感觉不太好!)