У меня есть приложение с minSdkVersion = 14
, compileSdkVersion = 27
и targetSdkVersion = 27
. Рассмотрим поле или метод, который был добавлен в API 16, например:
if (Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
Если я удалю оператор if, я получу предупреждение в Android Studio: Поле, обязательное для API уровня 16 (текущий минимум - 14): android.view.View. # SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN .
Итак, если я удаляю оператор if из такого метода или поля, результат вызова метода будет игнорироваться или будет выдано исключение, говорящее о том, что метод не найден, в зависимости от метода, вызываемого при работе на устройствах с API менее 16 Пока все хорошо.
Но если я использую Collections.unmodifiableList , который был добавлен в API 24, все работает нормально. Не происходит сбоев на устройствах с уровнями API менее 24, нет даже предупреждения о повреждениях, как было в вышеупомянутом случае, и я получаю ожидаемый результат. Это PR может быть полезно для подтверждения
что я получаю правильный результат.
Кроме того, при использовании android.text.Html.fromHtml(String)
(в окружении if-else), который устарел в API 24, я получаю предупреждение о том, что fromHtml (String) устарело с API 24 .
if (SDK_INT >= N) {
return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY).toString();
} else {
return Html.fromHtml(html).toString();
}
Я получаю предупреждение в блоке else. Я попытался повторно запустить lint, но я получаю это предупреждение.
Итак, мой вопрос: как я могу использовать Collections.unmodifiableList без каких-либо ошибок и предупреждений? Но получение предупреждения lint для Html.fromHtml (String) даже после использования оператора if-else и возможно ли использовать Html.fromHtml (String, int) , который был добавлен в API 24 на устройствах с API 14.
Я понимаю, что добавление на уровне API X означает, что для использования этого метода мне потребуется минимальный уровень API X, в противном случае у меня должен получиться сбой или нет результата. Что-то не так с моим пониманием? Как я должен знать, какие методы я могу использовать на каких уровнях API? Стоит ли полагаться на предупреждение lint для таких случаев, потому что официальные документы говорят, что добавлено в API 24, но метод может выполняться на устройстве с API 16?
Я искал SO и официальные документы по Android, но не могу найти ответ.