Size: a a a

Android Broadcast

2019 February 12
Android Broadcast
#RecyclerView #Animation #DiffUtil

RecyclerView — time to animate! (with payloads and DiffUtil)

Что вы знаете о payload в RecyclerView.Adapter.notifyItemChanged(int position, Object payload) ? Она позволяет вам сообщать что изменилось, а не заставляет обновить целый элемент в RecyclerView. DiffUtil также поддерживаются payload и позволяет вам точечно обновлять элементы списка.

В статье раскрываются подробности как анимировать изменения RecyclerView на основе описанного механизма.
источник
Android Broadcast
#R8 #Optimizations #String

R8 Optimization: String Constant Operations

Продолжение серии статей от Jake Wharton о оптимизациях в R8. В новой статье рассказывает о оптимизация строковых констант:
👉 Операции со строками
👉 Встраивание
👉 Оценка эффективности оптимизаций
источник
2019 February 13
Android Broadcast
#IoT #AndroidThings

An Update on Android Things

Google меняет фокус Android Things  как платформу для OEM партнеров для того чтобы делать умные колонки и дисплее.
источник
Android Broadcast
#Architecture #RIBs

RIBs - Uber's cross-platform mobile architecture framework

Uber открыла доступ к своей библиотеке RIBs, которая позволяет создавать кросс-платформенную архитектуру для Android и iOS приложений. Фреймворк разрабатывался для мобильных приложений с большим количеством разработчиков.

Остается ждать насколько она приживётся
источник
2019 February 15
Android Broadcast
#LibUpdates #ButterKnife #JakeWharton

ButterKnife 10.1.0 was released

Вышло обновление ButterKnife 10.1.0. Что нового:
👉 Слушатель для OnLongClickListener больше не требует возвращения boolean и может возвращать void
👉 Добавлена поддержка @OnTextChanged и @OnPageChange в butterknife-reflect
👉 Улучшения в butterknife-reflect
источник
2019 February 16
Android Broadcast
#ThreeTen #Backport #JakeWharton

ThreeTenABP 1.1.2

Вышло очередное обновление ThreeTenABP - обертка библиотеки ThreeTen бекпорта Java 8 Data/Time API. Релиз обновил базу данных по временным зонам и обновил базируемую версию ThreeTen до 1.3.8
источник
Android Broadcast
А Kotlin уже три годика 🎉
источник
Android Broadcast
#Retrofit #Coroutines #Kotlin

Retrofit meets coroutines

В Retrofit приходит официальная поддержка Coroutines от автор библиотеки. Пока изменения доступны только в snapshot версии, но уже в следующем релизе их можно будет начать корутинить ваши REST интерфейсы.

Появились новые возможности:
1️⃣   suspend функция Call<T>.await() : T
2️⃣   suspend функция Call<T>.awaitResponse(): Response<T>
3️⃣   Добавление suspend непосредственно к функции в интерфейсе

Выглядеть использование будет так:

interface SpaceXApi {
   @GET("rockets")
   suspend fun getRockets(): Call<List<Rocket>>
}

val api = retrofit.create<SpaceXApi>()

runBlocking {
   val rockets = api.getRockets()
   rockets.forEach(::println)
}
источник
2019 February 17
Android Broadcast
#AlarmManager

Using AlarmManager like a pro

В приложениях бывает необходимым вызывать событие в определенное время или с периодичностью, независимо от работы приложения. Для в Android служит AlarmManager. Но он имеет много подводных камней:
👉 Время срабатывания вызова не является гарантировано точным
👉 Особенности работы в режиме при ограничение системой потребления энергии (Doze, App Standby, Adaptive Battery и пр.)
👉 Сброс всех alarm при перезагрузке устройства и смене времени
👉 При создание alarm в прошлом он сработает мгновенно

В статье описывается решения как правильно восстанавливать alarm при их затирании системой
источник
Android Broadcast
#RxJava #Lifecycle #Uber

RxJava2 AutoDispose by Uber was opened

Uber открыла доступ к своей библиотеке AutoDispose. Она позволяете автоматически вызывать dispose() вашим Observable

ПОд капотом все выполняется с помощью метода-фабрики autoDisposable() следующим образом:

myObservable
   .doStuff()
   .as(autoDisposable(this))   // The magic  
   .subscribe(s -> ...);

Поддерживается основные компоненты Android с жизненным циклом, Architecture Components, RxLifecycle, есть расширения для Kotlin и тестов
источник
2019 February 20
Android Broadcast
#GooglePlay #AndroidVitals

Monitor and improve app performance with Android vitals

Запись доклада от Google Play Console команды, в котором рассказывается как такие факторы как стабильность, рендеринг и потребление батареи влияет на скорость ваших приложений со технической и бизнес сторон.

Также демонстрируется как эффективно использовать информацию из Android Vitals в Google Play консоле для того чтобы понимать производительность вашего приложения и как понять что у вас есть проблемы.

В рамках видео также будет сделано демо Android Vitals
источник
Android Broadcast
#Kotlin #Coroutines #BestPractices

Android Kotlin Coroutine Best Practices

Рекомендации по использованию корутин:
👉 Обрабатывайте жизненный цикл: необходимо останавливать корутины по выходу из Activity/Fragment
👉 Обрабатывайте исключения
👉 Не используйте напрямую CoroutineDispatcher из Dispatchers. Создавайте интерфейс через который вы будете представлять различные CoroutineDispatcher, а вот в его реализации можете делать брать их уже откуда хотите.
👉 Не забывайте что корутины - это асинхронный подход и не стоит модифицировать данные из нескольких корутин
👉 Правильно настраивайте правила для ProGuard
👉 Для обратной совместимости с Java 8+ конвертируете корутины в CompletableFuture с помощью CoroutineScope.future (нужна подключенная библиотека kotlinx-coroutines-jdk8). На Android это будет работать только для Android 7.0+
👉 Многий библиотеки не требуют задание Dispatcher чтобы выполняться в другом потоке, так как они уже по умолчанию внутри себя работают на другом потоке. Например Retrofit
источник
Android Broadcast
#ProGuard #Kotlin #Coroutines

-keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {}
-keepnames class kotlinx.coroutines.CoroutineExceptionHandler {}
-keepclassmembernames class kotlinx.** { volatile <fields>; }
источник
2019 February 21
Android Broadcast
#AndroidStudio

Is Your Android Studio Always Slow? 🚀Here’s How to Speed Up Immediately

Android Studio (AS) - это не самый быстрый софт. Обрастая новым функционалом каждый релиз, она становится все тяжелее и медленнее. Это печалит всех 😞.

Есть пара рекомендаций, чтобы оптимизировать работу AS:
👉 Отключите неиспользуемые плагины
👉 Используйте Gradle Offline режим
👉 Отключите параллельную режим Gradle
👉 Отключите Instant Run
👉 Используйте физические устройства, а не эмуляторы
источник
Android Broadcast
#Library

TimetableLayout is a RecyclerView.LayoutManager to display the timetable for Android

LayoutManager для RecyclerView, позволяющий отображать вам ваш контент в виде расписания
источник
Android Broadcast
источник
Android Broadcast
#CodeQuality #Facebook #MachineLearning

Facebook Infer is a static analysis tool base on machine learning

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

Описание принципов работу Infer
Попробуйте Infer онлайн
источник
2019 February 22
Android Broadcast
#GooglePlay

Expanding target API level requirements in 2019

Google вновь поднимает target sdk для всех приложений в Google Play. Теперь минимальная версия будет Android 9.0 (API 28) для всех приложений:
С августа - для всех новых
С ноября - для всех обновляемых

Также пользователи будут получать предупреждение при установке приложений, о том что оно не адаптировано под новые версии Android. Работать это будет по следующим правилам:
❗С августа новые приложения будут получат предупреждения если target sdk < 26 (Android 8.0)
С ноября новые версии существующих приложений получат предупреждения если target sdk < 26
Если версия Android вашего устройства меньше обязательной target sdk, то предупреждения вы не увидите. Каждый год минимальная target sdk будет повышаться до следующей мажорной версии ОС.

Как вы относитесь к таким изменениям?
источник
Android Broadcast
#AndroidStudio #Marble #ApplyChanges

Android Studio Project Marble: Apply Changes

Google наконец-то прислушалась к мольбам Android разработчиков о улучшение Android Studio в плане стабильности, фикса багов и чрезмерного потребления ресурсов. результат этого - Project Marble, в рамках которого на протяжение релизов Android Studio 3.4 и дальше будет происходить работы над стабилизацией.

Первая статья в серии описывает падение Instant Run и замену его на Apply Changes, доступный в Android Studio 3.5. необходимость нового механизма возникла в том что Instant Run не справлялась со сложными приложениями.

Отличия в Apply Changes следующие:
👉 Минимальная поддерживаемая версия Android 8.0 Oreo
👉 Apply Changes не модифицирует APK во время сборки, а опирается на механизмы в Android 8.0, которые позволяют переопределять классы "на лету"
👉 Оптимизация механизма сравнения установленного и нового APK для вычисления разницы
источник
Android Broadcast
#Assembler #Hardcore

Как мы писали Android-приложение на ассемблере

Какой язык выбрать чтобы написать "Hello World!" на Android. Обычный программист напишет на Java, хипстер на Kotlin, но самые серьезные, сторонники подхода Чака Норриса выберут ассемблер. Автор статьи из суровых и решил повторить это за Чаком! Больше подробностей о том как это сделать вы найдете по ссылке.
источник