Поддерживается ли java 8 в андроиде ниже 7?

209
26 января 2018, 22:47

Андроид поддерживает java 8 добавлением в gradle suporta 1.8 .Но это действительно для андроид 7.0 и если я там использую лямбды то на телефонах с прошивкой 4.0+ приложение будет падать?

Answer 1

Поддержка/не поддержка Java 8 не зависит от версии Android.

Напомню как устроена компиляция в Android:

.java -> .class -> .dex

Java 8 работает только на этапе компиляции Java исходников в объектники .class, далее вступает в действие утилита dex, которая JVM объектник переводит в Dalvik/ART объектник - .dex. Так что как только у вас есть .class - уже не играет роли из чего он был создан из Java 8 или 7, 6. Были бы портированы библиотеки, остальное уже не играет роли.

Update

По следам дискуссии в комментариях акцентирую - новинки Java 8 условно можно разделить на новые фичи самого языка и новые методы API (библиотечные функции).

Так вот: фичи языка (как явствует из логики ответа) не зависят от версии Android. Другое дело с фичи API - их наличие/отсутствие целиком и полностью зависит от их портирования на Android. В основном они доступны только в API 24.

READ ALSO
Обновление данных в RecyclerView javarx

Обновление данных в RecyclerView javarx

У меня есть RecyclerView и он наполнен данными, как мне сделать так ,что если я получаю новые данные с сервера, я, незаметно для пользователя, оставался...

275
Retrofit. @Path для Headers

Retrofit. @Path для Headers

Можно ли использовать @Path для замены части заголовка? К примеру можно ли сделать так:

241
Где вызывать void onRestoreInstanceState(Parcelable state) и Parcelable onSaveInstanceState()

Где вызывать void onRestoreInstanceState(Parcelable state) и Parcelable onSaveInstanceState()

Подскажите где вызывать эти методы у наследника View ? при повороте дисплея они не вызываются

229