Android
Создание обратных совместимых приложений
Поиск…
Как обращаться с устаревшим API
Маловероятно, что разработчик не столкнется с устаревшим API в процессе разработки. Устаревший программный элемент - это тот, который программистам не рекомендуется использовать, как правило, потому, что это опасно, или потому, что существует лучшая альтернатива. Компиляторы и анализаторы (например, LINT ) предупреждают, когда устаревший программный элемент используется или переопределяется в устаревшем коде.
Устаревший API обычно идентифицируется в Android Studio с помощью аута. В приведенном ниже примере метод .getColor(int id)
устарел:
getResources().getColor(R.color.colorAccent));
По возможности разработчикам рекомендуется использовать альтернативные API и элементы. Можно проверить обратную совместимость библиотеки, посетив документацию по Android для библиотеки и проверив раздел «Добавлен в уровень API x»:
В случае, если API, который вам нужен, несовместим с версией Android, которую используют ваши пользователи, перед использованием этой библиотеки вы должны проверить уровень API для пользователя. Например:
//Checks the API level of the running device
if (Build.VERSION.SDK_INT < 23) {
//use for backwards compatibility with API levels below 23
int color = getResources().getColor(R.color.colorPrimary);
} else {
int color = getResources().getColor(R.color.colorPrimary, getActivity().getTheme());
}
Использование этого метода гарантирует, что ваше приложение будет оставаться совместимым с новыми версиями Android, а также с существующими версиями.
Простая альтернатива: используйте библиотеку поддержки
Если используются библиотеки поддержки, часто есть статические вспомогательные методы для выполнения одной и той же задачи с меньшим количеством клиентского кода. Вместо блока if / else выше просто используйте:
final int color = android.support.v4.content.ContextCompat
.getColor(context, R.color.colorPrimary);
Большинство устаревших методов, которые имеют более новые методы с другой подписью и многие новые функции, которые, возможно, не могли быть использованы в старых версиях, имеют вспомогательные вспомогательные методы. Чтобы найти других, просмотрите библиотеку поддержки для таких классов, как ContextCompat
, ViewCompat
и т. Д.