Что такое SharedPreferencesCompat? vs SharedPreferences

Я хочу знать, что такое SharedPreferencesCompat? и как он отличается от SharedPreferences?

Ответы

Ответ 1

Все классы ...Compat предназначены для обратной совместимости. Некоторые из них привносят новые функции в старые устройства, которые не имеют их изначально, некоторые помогают другим способам разработки для старых устройств.

В этом случае он обеспечивает упрощенный способ вызова метода apply, который был добавлен в уровне API 9.

Вам не нужен этот класс, если ваше приложение не поддерживает версии старше 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);