Что означает «Этот метод устарел» означает для разработчиков приложений

Я вижу немало хороших старых полезных методов или даже целых классов, которые «устарели и устарели».

Но код, используемый для вызова этих методов, продолжает работать. Итак, что это значит для меня, как разработчика приложений для Android?

  1. Продолжайте использовать этот метод, пока я хочу, потому что новые SDK всегда будут оставаться обратно совместимыми.
  2. Он будет работать до тех пор, пока я создаю для старых целей (например, API 8), но если я буду строить из API 14, компилятор откажется завершить сборку.
  3. Оба (1) и (2)
  4. Другие?

Это особенно сбивает с толку, когда альтернативы не предоставляются, как в случае с WebView.PictureListener.html # onNewPicture .

Обычно это означает, что есть лучший способ сделать что-то или что устаревшая функциональность имеет некоторые непоправимые недостатки и ее следует избегать. Обычно вы можете использовать устаревшие методы, но вам рекомендуется либо переключиться на какой-то новый API (в первом случае), либо найти другой способ делать то, что вы хотите (во втором).

Что касается onNewPicture в частности, весь интерфейс PictureListener устарел. Нет никаких признаков того, что, если угодно, должно заменить его. Комментарий от @CommonsWare в этой теме – пища для размышлений:

Можно предположить, что изменения в WebKit вверх по течению приводят к устареванию, и поддержка PictureListener может быть полностью потеряна в некоторых будущих выпусках.

Я бы пошел с 4:

В основном вам будет сказано, что использование метода или класса не рекомендуется; Это не 100%, что они будут поддерживать обратную совместимость (они могут решить не включать этот метод в будущие выпуски), поэтому вы должны попытаться использовать замену метода или класса. Иногда это невозможно использовать новые методы (например, если вы хотите поддерживать устройства, работающие на старых версиях).

Иногда это возможно. Например, метод showDialog теперь устарел, и они рекомендуют использовать класс DialogFragment . Вы можете добиться этого даже в более старых версиях Android, используя библиотеку совместимости .

Устаревшие методы не гарантируют, что они будут обратно совместимы. Они могут остаться там еще несколько релизов, чтобы дать каждому возможность уйти от них, прежде чем разработчики удалят их. Тот факт, что они устарели, означает, что разработчики считают, что есть более простой, быстрый, аккуратный или иной способ сделать то, что делает этот класс или метод.

Вероятно, лучше изменить код, чтобы использовать не устаревший интерфейс, так как если вы подождете, и он будет удален, ваши пользователи будут видеть сбои и ошибки.

Даже если они устарели, они могут компилироваться, но не работать. Google решил удалить различные функции на низком уровне ОС.

Дело в точке. Google, в android release 2.3, устарел многие, но не все API-интерфейсы методов, которые позволили записать запись. Они компилируют ОК, но не работают с Android 2.3 и переадресовываются на любое мобильное устройство Android или планшет с возможностями телефона.

В качестве примера для устаревшего интерфейса, который был удален на более позднем уровне API, рассмотрим пакет org.apache.http: он устарел на уровне API 22 и удалился с уровня API 23 .

Конечно, на реальных Android-устройствах классы, содержащиеся в этом пакете, по-прежнему будут доступны в системных библиотеках (в противном случае приложения, ориентированные на более раннюю версию Android, больше не будут работать на этом устройстве).

Однако они больше не доступны в SDK, поэтому компиляция завершится неудачно, если вы не измените SDK target / build на более старую версию (или вручную включите устаревшие классы).

Если Google действительно решила отказать в использовании этих библиотек, они могли бы модифицировать реализацию, чтобы затронутые классы проверяли целевую версию API запущенного приложения и жаловались и / или бросали исключение во время выполнения.