На днях вышел
Retrofit 3.0. А точнее в один день вышло 2 версии — Retrofit 3.0 и 2.12Библиотека важная, поэтому обзор
Самое интересное случилось в 2.12 — добавили стриминговую сериализацию из
Kotlin/Java-классов в Json/ProtobufЗачем это нужно было? ➡️чтобы большие классы не сериализовывались целиком перед отправкой запроса, а начинали это делать во время передачи данных на бэк
Это позволит чутка снизить нагрузку на процессор и оперативку, если
🔵передаете объемные данные в теле запроса (1 мегабайт+)
🔵где-то вызываете
Retrofit.Call.enqueue() с главного потока — стриминг перенесет сериализацию с главного UI-потока в бэкграундЧтобы изменения заработали, нужно создавать конвертер с помощью функции
withStreaming()MoshiConverterFactory.create(moshi).withStreaming() // пример
В
Retrofit 3.0 просто апнули версию OkHttp (3.14.9 -> 4.12.0). И немного поправили внутреннего кода, пару строк для совместимости с 4.12.0Так что если обновите версию Retrofit, у вас транзитивно апнется OkHttp — будьте внимательны, берегите себя и своих тестировщиков
Из хороших новостей — Retrofit 3.0 формальный мажор, то есть бинарно совместим с предыдущими версиями (по словам разработчиков). Мажорное версию апнули
Пруфы:
🔵 compare 3.0 with previous (там много ченжей, но 90% из них — это обновление их website с документацией)
🔵 compare 2.12 with previous (тут можно посмотреть, за счет чего сериализация стала асинхронной)
@dolgo_polo_dev
