Ответ 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);