什么是SharedPreferencesCompat? 与SharedPreferences

我想知道什么是SharedPreferencesCompat? 它与SharedPreferences有何不同?

所有...Compat类是为了向后兼容。 有些为旧设备带来了新function,而这些旧设备本身没有这些function,有些技术可帮助您开发旧设备。

在这种情况下,它提供了一种简化的方法来调用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); 

源代码将回答您的问题: http : //grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.2_r1/com/android/common/SharedPreferencesCompat.java

Reflection utils在可能的情况下调用SharedPreferences $ Editor.apply,当apply不可用时回退到commit。