Понимание добавлено на уровне API в документах Android - PullRequest
0 голосов
/ 04 июля 2018

У меня есть приложение с 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, но не могу найти ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...