Работает ли DefaultHttpClient на Android 6?

Оставив цель на API22 и запустив приложение на устройстве с платформой Android 6, я вижу, что DefaultHttpClient все еще работает, хотя и не поддерживается новой платформой.

Как это возможно, работает ли он в режиме совместимости?


comment
HttpClient устарел, начиная с уровня API 22. Используйте HttpURLConnection. blogspot.in/2011/09/   -  person IntelliJ Amiya    schedule 07.10.2015
comment
@IntelliJAmiya Не все функции HttpClient доступны в HttpURLConnection. Есть множество причин продолжать использовать DefaultHttpClient.   -  person Daniël van den Berg    schedule 07.10.2015
comment
Мой вопрос в другом: как это возможно, что он все еще работает.   -  person GPack    schedule 07.10.2015
comment
Я надеюсь, что это будет полезно stackoverflow.com/questions/32090899/   -  person Ajit Kumar Dubey    schedule 07.10.2015


Ответы (1)


То, что он не поддерживается, не означает, что он был удален. В коде вы часто будете видеть «устаревшие» функции. Это функции, которые не поддерживаются, но намеренно не удаляются.

В этом случае вы используете функционал из библиотеки Android API22. Чтобы сохранить обратную совместимость, функции предыдущих API почти никогда полностью не удаляются из фактической среды Android.

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 23
    }
}

Все, что отсутствует на уровне API 23, но доступно на уровне 17, будет включено в ваше приложение.

person Daniël van den Berg    schedule 07.10.2015
comment
Я думаю, что следует сделать акцент на почти никогда. Я видел некоторые методы/классы, фактически удаленные из SDK (например, android.provider.Browser.BookmarkColumns), и я не удивлюсь, если это произойдет в реальных устройствах в какой-то момент, хотя я уверен, что они иметь действительно веские причины для этого. Лучше просто попытаться следить за изменениями API и правильно тестировать приложения при использовании устаревших вещей. - person Zharf; 07.10.2015
comment
@Zharf добавил акцент;) - person Daniël van den Berg; 07.10.2015
comment
Но моя фактическая targetSdkVersion установлена ​​​​на 22, а не на 23, и я не уверен, что отсутствующий DefaultHttpClient связан с APK и используется во время выполнения из этого. У вас есть ссылка на документы о компиляции APK, пожалуйста? - person GPack; 07.10.2015