什么是SharedPreferencesCompat? vs SharedPreferences

我想知道什么是SharedPreferencesCompat? 和SharedPreferences有什么不同?

Solutions Collecting From Web of "什么是SharedPreferencesCompat? vs SharedPreferences"

所有...Compat类是为了向后兼容。 有些function为旧设备带来了新的function,这些设备本身并不具备这些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,当应用程序不可用时,会回退以提交。