我想知道什么是SharedPreferencesCompat?它与SharedPreferences有什么不同?
答案 0 :(得分:21)
所有...Compat
类都是为了向后兼容。有些设备为旧设备带来了新功能,而这些设备本身并不具备这些功能,有些设备可帮助您开发旧设备。
在这种情况下,它提供了一种简化的方法来调用API级别9中添加的apply
方法。
如果您的应用不支持9岁以上的版本,则您不需要该课程。
如果您支持较旧的设备并且要执行以下操作
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("key","val");
editor.apply();
您会收到错误,因为您支持的所有设备上都不存在该方法。解决这个问题变得很难看。除非您使用SharedPreferencesCompat
:
...
editor.putString("key", "val");
SharedPreferencesCompat.EditorCompat.getInstance().apply(editor);
答案 1 :(得分:3)
Reflection utils在可能的情况下调用SharedPreferences $ Editor.apply,在应用时不再提交。