#Architecture #BestPractices
The “Real” Repository Pattern in Android
Repository - это довольно популярный шаблон проектирования, позволяющий инкапсулировать получение/хранение данных из различных источников: сервер, БД, хранилища на устройстве и пр.
Шаблон проектирования - это рекомендация и общее описание компонентов и их отношений между ними, поэтому зачастую разработчики делают реализацию по разному и не всегда хорошо.
Наиболее популярные ошибки, которые допускают пользователи:
👉
👉 Различные несвязанные между собой DataSource используются одни и те же DTO
👉 Repository реализуется по на основе endpoint-ов, а не на основе модели
👉 Repository кэширует всю модель, даже те поля, которые всегда должны быть свежими
👉 DataSource используется более чем одним Repository
В статье разбираются эти лучшие практики по реализации и почему им стоит следовать
The “Real” Repository Pattern in Android
Repository - это довольно популярный шаблон проектирования, позволяющий инкапсулировать получение/хранение данных из различных источников: сервер, БД, хранилища на устройстве и пр.
Шаблон проектирования - это рекомендация и общее описание компонентов и их отношений между ними, поэтому зачастую разработчики делают реализацию по разному и не всегда хорошо.
Наиболее популярные ошибки, которые допускают пользователи:
👉
Repository
возвращает DTO (модели источников данных, которые используются источниками данных в нем) а не модели Domain слоя👉 Различные несвязанные между собой DataSource используются одни и те же DTO
👉 Repository реализуется по на основе endpoint-ов, а не на основе модели
👉 Repository кэширует всю модель, даже те поля, которые всегда должны быть свежими
👉 DataSource используется более чем одним Repository
В статье разбираются эти лучшие практики по реализации и почему им стоит следовать
Medium
The “Real” Repository Pattern in Android
Over the years I’ve seen many implementations of the repository pattern, yet I think most of them are wrong and not beneficial.
#Testing
Android UI Testing Frameworks
Сравнение различных тестовых фреймворков для UI на Android. В ходе сравнения производится сравнения реализации одного тестового сценария на разных фреймворках:
👉 Appium
👉 Espresso
👉 UI Automator
Android UI Testing Frameworks
Сравнение различных тестовых фреймворков для UI на Android. В ходе сравнения производится сравнения реализации одного тестового сценария на разных фреймворках:
👉 Appium
👉 Espresso
👉 UI Automator
Medium
Android UI Testing Frameworks
Testing is an essential part of the software development process and product release. Often, there is a situation when there are two…
#Java
Jabel - unlock Javac 12+ syntax when targeting Java 8
Все еще боретесь за права Java и не признаёте Kotlin? Пока Android команда молчит о добавление поддержке возможностей из свежих версий Java, проект Jabel может вас порадовать. Автор занимается тем чтобы использовать такие новинки Java 12+ на Java 9 как:
👉 var
👉 Type inference
👉 switch expression
👉 много другого менее интересного
Jabel - unlock Javac 12+ syntax when targeting Java 8
Все еще боретесь за права Java и не признаёте Kotlin? Пока Android команда молчит о добавление поддержке возможностей из свежих версий Java, проект Jabel может вас порадовать. Автор занимается тем чтобы использовать такие новинки Java 12+ на Java 9 как:
👉 var
👉 Type inference
👉 switch expression
👉 много другого менее интересного
GitHub
GitHub - bsideup/jabel: Jabel - unlock Javac 9+ syntax when targeting Java 8
Jabel - unlock Javac 9+ syntax when targeting Java 8 - bsideup/jabel
#ViewBinding
В Android Studio добавили View Binding
В Android Studio 3.6. Canary 11 добавили поддержку
Наконец-то появилась альтернатива Butter Knife и Kotlin Android Extensions.
В Android Studio добавили View Binding
В Android Studio 3.6. Canary 11 добавили поддержку
View Binding
. View Binding
- это легкая замена Data Binding, котороя содержит только ссылки на View из ваших layout ресурсов.Наконец-то появилась альтернатива Butter Knife и Kotlin Android Extensions.
#JakeWharton
Вышел Butter Knife 10.2.0
Вышла новая версия библиотеки Butter Knife, в которой реализована поддержка инкрементального процессинга аннотаций, а также теперь поддерживается только Android Gradle Plugin версии 3.3 и выше
Вышел Butter Knife 10.2.0
Вышла новая версия библиотеки Butter Knife, в которой реализована поддержка инкрементального процессинга аннотаций, а также теперь поддерживается только Android Gradle Plugin версии 3.3 и выше
GitHub
butterknife/CHANGELOG.md at master · JakeWharton/butterknife
Bind Android views and callbacks to fields and methods. - butterknife/CHANGELOG.md at master · JakeWharton/butterknife
Что вы используете для получения ссылок на view в Android?
Final Results
16%
findViewById()
4%
Butter Knife
1%
Kotter Knife
11%
Android DataBindings
2%
View Bindings (появилось в AS 3.6 Canary 11)
60%
Kotlin Android Extensions
3%
Пишу UI в коде и не нужно ничего искать
2%
Собственное решение
1%
Не работаю с UI
#JakeWharton #ViewBinding
Важная новость которую я пропустил в посте и Butter Knife 10.2.0 - Jake рекомендует мигрировать на View Binding т.к. разработка Butter Knife останавливается
Важная новость которую я пропустил в посте и Butter Knife 10.2.0 - Jake рекомендует мигрировать на View Binding т.к. разработка Butter Knife останавливается
#Multiplatform #ReactiveX #Kotlin
Вышел Reaktive 1.0.0-rc2
Ребята из Badoo не останавливаются и продолжают развивать свою библиотеку Reaktive - ReactiveX на чистом Kotlin причем еще и Multiplatform. В новой версии произошли следующие изменения:
👉 Переход на Kotlin 1.3.50
👉 Новый оператор threadLocal()
👉 Thread local subscriptions
👉 Новые операторы
👉 Исправление багов и больше стабильности
👉 Добвлен MPP модуль с примером
Ждем не дождемся стабильного релиза!
Вышел Reaktive 1.0.0-rc2
Ребята из Badoo не останавливаются и продолжают развивать свою библиотеку Reaktive - ReactiveX на чистом Kotlin причем еще и Multiplatform. В новой версии произошли следующие изменения:
👉 Переход на Kotlin 1.3.50
👉 Новый оператор threadLocal()
👉 Thread local subscriptions
👉 Новые операторы
👉 Исправление багов и больше стабильности
👉 Добвлен MPP модуль с примером
Ждем не дождемся стабильного релиза!
GitHub
Release 1.0.0-rc2 · badoo/Reaktive
Kotlin 1.3.50
New threadLocal() operator and thread local subscriptions
More operators
Bug fixes
More tests
Added sample MPP module, reused in all sample apps, MVI architecture
Linux sample app now...
New threadLocal() operator and thread local subscriptions
More operators
Bug fixes
More tests
Added sample MPP module, reused in all sample apps, MVI architecture
Linux sample app now...
"Reaktive: реактивное программирование в Kotlin Multiplatform" - Аркадий Иванов@Badoo
Уже доступно видео с конференции Kotlin/Everywhere Minsk, где один из создателей библиотеки рассказывает более подробно о ней.
Уже доступно видео с конференции Kotlin/Everywhere Minsk, где один из создателей библиотеки рассказывает более подробно о ней.
#JavaScript #V8
A lighter V8
Для всех кто исполняет JS код у себя в приложения (я это не разделяю, но есть legacy порой). V8 Lite - это проект направленный на сокращения потребления памяти на слабых устройствах. В некоторых оптимизациях в жертву была отдана скорость выполнения.
В статье рассказывается о том, что из себя представляет новый режим V8, какие есть оптимизации, сравнение V8 и V8 Lite и результаты работы.
A lighter V8
Для всех кто исполняет JS код у себя в приложения (я это не разделяю, но есть legacy порой). V8 Lite - это проект направленный на сокращения потребления памяти на слабых устройствах. В некоторых оптимизациях в жертву была отдана скорость выполнения.
В статье рассказывается о том, что из себя представляет новый режим V8, какие есть оптимизации, сравнение V8 и V8 Lite и результаты работы.
v8.dev
A lighter V8 · V8
The V8 Lite project dramatically reduced the memory overhead of V8 on typical websites, this is how we did it.
Всем привет! Сегодня 256-ой день в году, а это значит, что сегодня важный праздник для большинства подписчиков канала - День Программиста. Я желаю вас всего самого наилучшего: чистой архитектуры проектов, быстрой сборки, отсутствия багов, интересного стека технологий, задач и достижения невероятных высот вашими приложениями.
Спасибо всем вам, что вы читаете новости. Очень приятно понимать, что то что ты делаешь кому-то нужно и помогает. Хороших всем выходных!
Спасибо всем вам, что вы читаете новости. Очень приятно понимать, что то что ты делаешь кому-то нужно и помогает. Хороших всем выходных!
#Conference
Три в ряд: топ-10 докладов Mobius 2019 Piter
Появились записи докладов с последнего Mobius, который прошёл в мае 2019 в Санкт-Петербурге. Топовым докладом стал рассказ Дениса Неклюдова о архитектуре в Lyft. Также рекомендую обратить внимание на доклад Степана Гончарова об оптимизации Gradle сборки.
К сожалению, мой доклад «Coroutining Android Apps» не попал в топ 10, но вы сможете найти там полезные советы как использовать Coroutine эффективнее и правильнее в своих Android проектах.
Три в ряд: топ-10 докладов Mobius 2019 Piter
Появились записи докладов с последнего Mobius, который прошёл в мае 2019 в Санкт-Петербурге. Топовым докладом стал рассказ Дениса Неклюдова о архитектуре в Lyft. Также рекомендую обратить внимание на доклад Степана Гончарова об оптимизации Gradle сборки.
К сожалению, мой доклад «Coroutining Android Apps» не попал в топ 10, но вы сможете найти там полезные советы как использовать Coroutine эффективнее и правильнее в своих Android проектах.
Хабр
Три в ряд: топ-10 докладов Mobius 2019 Piter
В День программиста делимся с мобильными разработчиками подборкой отличных докладов! В мае в Петербурге прошла конференция Mobius, а теперь мы опубликовали её видеозаписи — и для Хабра сделали...
#KotlinEverywhere #Minsk #Kotlin
7 сентября в Минск прошла конференция Kotlin/Everywhere Minsk. Уже стали доступны записи практически всех докладов. Почему практически всех? Нам необходимо получить одобрение всех спикеров на публикацию, поэтому нужно время.
7 сентября в Минск прошла конференция Kotlin/Everywhere Minsk. Уже стали доступны записи практически всех докладов. Почему практически всех? Нам необходимо получить одобрение всех спикеров на публикацию, поэтому нужно время.
#Gradle #Kotlin #DSL
Converting your Android Gradle scripts to Kotlin
Недавно я перевел в одном из проектов Gradle на Kotlin DSL. И вам скажу мне очень зашло. Что изменилось:
➕Появилось нормальное автодополнение в IDE
➕Ошибки в скриптах можно получить до запуска сборки
➕Избавление от Groovy, так как он использовался только для Gradle скриптов и теперь у меня один язык везде - Kotlin
➖увеличилось время инициализации
➖Пришлось переписать часть скриптов
➖Некоторые вызовы которе легко делаются в Groovy, выглядят странным в Kotlin (но это улучшается с каждым релизом)
Хотите попробовать тоже самое в своих проекта? Тогда читайте больше подробностей в статье как это сделать
Converting your Android Gradle scripts to Kotlin
Недавно я перевел в одном из проектов Gradle на Kotlin DSL. И вам скажу мне очень зашло. Что изменилось:
➕Появилось нормальное автодополнение в IDE
➕Ошибки в скриптах можно получить до запуска сборки
➕Избавление от Groovy, так как он использовался только для Gradle скриптов и теперь у меня один язык везде - Kotlin
➖увеличилось время инициализации
➖Пришлось переписать часть скриптов
➖Некоторые вызовы которе легко делаются в Groovy, выглядят странным в Kotlin (но это улучшается с каждым релизом)
Хотите попробовать тоже самое в своих проекта? Тогда читайте больше подробностей в статье как это сделать
Medium
Converting your Android Gradle scripts to Kotlin
Using the same language throughout your whole project can further streamline and speed up your development process. With the stable…
Android Broadcast
Что вы используете для получения ссылок на view в Android?
Что и требовалось доказать - в силу большой популярности Kotlin на Android, как панацею от
1️⃣ view с одинаковыми id в разных layout порой создавали проблемы, так как
2️⃣ Не самая быстрая скорость работы сборки с ними
3️⃣ Необходимость именновать id view таким образом, чтобы соотвествующие сгенерированные им View с помощью
Вполне возможно этих проблем уже и нет и все пришло в норму. Так ли это? Пишите свои комментарии в @android_broadcast_discussions
findViewById()
разработчики предпочитают Kotlin Android Extensions
(далее KAE
). Я от них отказался. Почему:1️⃣ view с одинаковыми id в разных layout порой создавали проблемы, так как
KAE
завязаны на статических импортах и порой по ошибке легко было импортировать не View
, привязанное к отличному от использоваему в коде layout2️⃣ Не самая быстрая скорость работы сборки с ними
3️⃣ Необходимость именновать id view таким образом, чтобы соотвествующие сгенерированные им View с помощью
KAE
, были в camel case. Например вместо @id/my_magic_view
приходилось писать @id/myMagicView
Вполне возможно этих проблем уже и нет и все пришло в норму. Так ли это? Пишите свои комментарии в @android_broadcast_discussions
#WorkManager #ArchitectureComponents
Workout your tasks with WorkManager — Advanced Topics
Продолжение серии статей о работе с WorkManager. В текущей рассматривается:
1️⃣ Как идентифицировать Task
2️⃣ Как получить статус Task
3️⃣ Политики по повторению выполнения Task (backoff)
4️⃣ Зависимости выполнения Task между собой
5️⃣ Как работать с входными и выходными данными
6️⃣ Как можно управлять многопоточностью в WorkManager
Workout your tasks with WorkManager — Advanced Topics
Продолжение серии статей о работе с WorkManager. В текущей рассматривается:
1️⃣ Как идентифицировать Task
2️⃣ Как получить статус Task
3️⃣ Политики по повторению выполнения Task (backoff)
4️⃣ Зависимости выполнения Task между собой
5️⃣ Как работать с входными и выходными данными
6️⃣ Как можно управлять многопоточностью в WorkManager
Medium
Workout your tasks with WorkManager — Advanced Topics
Advanced topics like getting the status of the work, BackoffPolicy, chaining work and Threading options.
#ART #Dalvik
Android Internals: ART vs DVM deep dive
Сравнение виртуальных машин ART и Dalvik, которые исполняют код Android приложений. В статье вы найдете таки слова как
Android Internals: ART vs DVM deep dive
Сравнение виртуальных машин ART и Dalvik, которые исполняют код Android приложений. В статье вы найдете таки слова как
Virtual Machine
, Stack
, Register
, JVM
, Dalvik
, AOT
, JIT
, Garbage Collector
Medium
Android Internals: ART vs DVM deep dive
In the previous article on Android Internals, we learnt how Android OS Starts an application. We mentioned many things such as Bootloader…
#ImageLoader #Benchmark
Coil vs Picasso vs Glide: Get Ready… Go!
Сравнение наиболее популярных решений для загрузки картинок Glide и Picasso с подрастающим поколением Coil. Сможет ли читаный Kotlin на Coroutine победить старожил?
Coil vs Picasso vs Glide: Get Ready… Go!
Сравнение наиболее популярных решений для загрузки картинок Glide и Picasso с подрастающим поколением Coil. Сможет ли читаный Kotlin на Coroutine победить старожил?
Medium
Coil vs Picasso vs Glide: Get Ready… Go!
Coil is the new library everyone talks about. But what is its performance compared to Glide and Picasso? The race is about to start.
#Android10
Getting Buffer Publish ready for Android 10
Небольшое руководство по основным моментам миграции на Android 10:
👉 Обновление версий
👉 Навигация жестами
👉 Scoped Storage
👉 Settings Panels
👉 Улучшение sharing
👉 Biometric prompt
Getting Buffer Publish ready for Android 10
Небольшое руководство по основным моментам миграции на Android 10:
👉 Обновление версий
👉 Навигация жестами
👉 Scoped Storage
👉 Settings Panels
👉 Улучшение sharing
👉 Biometric prompt