Size: a a a

Android Broadcast

2019 June 03
Android Broadcast
#Animation #Keyboard

Animating Keyboard Appearance in Android Application

Разбор того как можно анимировать ваш UI при появление/скрытие клавиатуры, а не просто полагаться на стандартное поведение системы

Рецепт складывается из Window + WindowInsets + View.OnApplyWindowInsetsListener + Animation
источник
Android Broadcast
#BKUG #Meetup #Coroutines

BKUG #13

Для всех тех у кого есть вопросы как использовать корутины правильно и эффективно, сообщество Belarusian Kotlin User Group (BKUG) приготовило для вас митап. В рамках встречи лидеры сообщества Кирилл Розов и Руслан Ибрагимов поделятся лучшими практиками в использование корутин на Android. Также вы сможете задать свои вопросы и получить ответы.

Начало в 19.00 в Space_. Проход через Октябрьскую 10б (рекомендую ориентироваться на этот адрес)

Участие бесплатное по предварительной регистрации
источник
2019 June 04
Android Broadcast
#Firebase #AndroidX #GooglePlayServices

Google Play services and Firebase migrating to AndroidX

Google Play Services и Firebase мигрируют свое SDK на AndroidX. Спустя год после анонса Android. Ох, скоро заживем что не придется включать Jetifier и все сторонние библиотеки будут использовать AndroidX. Ну а пока тормозим свой билд необходимостью конвертирования Support Library артефактов в AndroidX 🤦‍♂️.

Хотите узнать сколько в вашем проекте зависимостей используют Support Library и можно ли в вашем проекте отказаться от Jetifier - попробуйте Can I drop Jetifier?.
источник
Android Broadcast
#Debug #Tooling

Android debug tools

Разбор различных инструментов для дебага Android приложений:
👉 Android Profiler
👉 Facebook Stetho - дебаг вашего приложения из браузера Chrome
👉 DebugDrawer - боковая панель, которая позволяет конфигурировать вам различные состояния вашего приложения и просматривать статистику приложения: FPS, состояние кэша и пр.
👉 AppSpector - сервис для дебага Android и iOS . приложений, который позволяет вам выполнять все удаленно в реальном времени. Тулинг платный, с 14 днями триала 😔
источник
Android Broadcast
#Kotlin #Coroutines #Flow

Execution context of Kotlin Flows

Flow к нам приходят и все больше деталей о их работе раскрывается. В статье Роман Елизаров рассматривает особенно выполнения Flow на разных CoroutineDispatcher и как правильно переключаться между ними.
источник
2019 June 05
Android Broadcast
#GooglePlay

Improved app quality and discovery on Google Play

Google обновляет алгоритм ранжирования для приоритизации приложений и игр высокого качества и высокой производительностью. Не хотите спуститься в подвал Google Play? Готовьтесь к оптимизации вашего приложения. Есть 3 ключевых направления:
👉 Хороший пользовательский опыт использования приложения
👉 Стабильность и производительность
👉 Эффективная страница приложения в Google Play
источник
Android Broadcast
#ViewModel #ArchitectureComponents

Retain внутри, а снаружи ViewModel

Разбор того, как работает ViewModel из Architecture Components под капотом.
источник
Android Broadcast
#Architecture #LiveData

How not to use sealed classes and LiveData for state management

Разбор построения архитектуры на ViewModel + LiveData + State Object. State Object представляет собой Sealed класс, который содержит всю информацию о состоянии экрана.
источник
Android Broadcast
#Coroutines #BestPractices

Coroutining Android Apps

Kotlin Coroutines - хайповый подход для реализации асинхронных задач, особенно если проект строится на Kotlin. Но любой новый подход надо стараться использовать правильно, чтобы получить максимальную пользу.

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

Слайды к докладу
источник
Android Broadcast
#AndroidQ

Вышла Android Q Beta 4 и финальное API

Вышла новая Beta Android Q в которой финализировали SDK и вы можете уже скачать 29 версию в Android Studio, а также Build Tools и Platform Tools. Также открыта публикация приложений с compileSdk и/или targetSdk 29. Дальше нас ждёт исправление багов в работе системы и SDK.

Владельцы Pixel всех поколений уже могут накатить новую бетку и похвастаться, а главное рассказать стабильно ли там все работает.
источник
2019 June 06
Android Broadcast
#Network

Вышел Retrofit 2.6.0

Что нового:
🎉 Поддержка корутин
@GET("users/{id}")
suspend fun user(@Path("id") long id): User

👉 Новая аннотация @Tag, позволяющая задать tag для OkHttp Request. Это можно использовать чтобы идентифицировать запрос
👉Новая аннотация @SkipCallbackExecutor, которая выполняет callback на том же executor, на котором происходит HTTP запрос
👉Поддержка типов header-ок в @HeaderMap
👉Исправление багов
источник
Android Broadcast
Как вы заботитесь о производительности в своём приложение?
Окончательные результаты
8%
Мониторим ежедневно и сразу исправляем
42%
Смотрим от релиза к релизу
18%
Только когда статистика светится красным
32%
Не заботимся, пусть пользователи телефоны обновляют!
Проголосовало: 125
источник
Android Broadcast
#AndroidX

Обновление AndroidX

Вышло свежая порция обновление библиотек AndroidX. Из интересного:

Стабильная версия Collection 1.1.0 + ktx
👉Улучшена производительность и API Android коллекций

Первая beta Fragment 1.1.0
👉 Создание собственной FragmentFactory, которая будет использоваться для создание Fragment. Это позволяет избавиться от рефлексии при создании Fragment и начать передавать параметры в конструктор.
👉 Тестирование Fragment в изоляции с помощью FragmentScenario
👉 Больше nullability аннотаций в API
👉 Kotlin делегаты by viewModels() и by activityViewModels() для получения ViewModel
👉 Поддержка задания View для Fragment с помощью передачи его в конструктор
👉Креши, выбрасываемые FragmentManager, теперь содержат информацию о Fragment
👉Возможность задать максимальное состояние в Lifecycle для выполнения транзакции FragmentManager

Первая beta Activity 1.0.0
👉 Возможность задать OnBackPressedCallback в Activity
👉 Новые удобные Kotlin API
👉 Задание content view Activity с помощью аннотации @ContentView

Первая beta Preference 1.1.0
👉 Возможность динамического изменения описания Preference с помощью SummaryProvider
👉 Обновлена SeekBarPreference: соответствие Material Design и возможность обновление во время перемещения ползунка
👉 Возможность задания доступности для копирования содержимого с помощью Preference.setCopyingEnabled()
👉 Используйте PreferenceFragmentCompat вместо PreferenceFragment. Аналогично правило теперь действует и для Preference
👉 Кастомизациия EditText с помощью EditTextPreference.OnBindEditTextListener
источник
Android Broadcast
#Kotlin

JetBrains запустила Kotlin Hands-On

Kotlin Hands-On - уроки в рамках которых вы можете различные технологии по Kotlin. Сейчас доступно 2 урока: "Introduction to Coroutines and Channels" и "Introduction to Kotlin/Native".

Kotlin Hands-On очень похоже на Google Codelabs и понравится любителям данного сервиса для знакомства с технологиями.
источник
2019 June 07
Android Broadcast
#Dagger #ArchitectureComponents #ViewModel

Assisted ViewModel

Как много усилий вы тратите на то чтобы написать ViewModelProvider.Factory для ViewModel из Architecture Components? Процесс не самый удобный, особенно когда в конструктор вы передаете только зависимости из графа . Dagger?

Я с коллегами решили написать библиотеку, которая избавит нас от этой тягомотины и поможет убрать необходимость реализации ViewModelProvider.Factory.

Пример использования:
class SampleViewModel @AssistedViewModel constructor(
   repository:Repository
): ViewModel


class SampleFragment: Fragment {

   private lateinit var viewModel: SampleViewModel

   @Inject
   // AssistedViewModelFactory is generated
   fun init(factory: AssistedViewModelFactory) {
      viewModel =
        ViewModelProviders.of(this, factory)
                .get(SampleViewModel::class.java)
   }
}
источник
Android Broadcast
#Performance

Android app startup time: why we care

Почему важна производительность мобильных приложений? На мой взгляд причины следующие:
👉 Улучшение пользовательского опыта использования приложения
👉 Более высокое расположение в Google Play
👉 Возможность работы на более слабых устройствах, что расширяет аудиторию

В статье разбирается из чего состоит запуск приложения, как измерять скорость и оптимизировать её
источник
Android Broadcast
#News

Опрос Android Broadcast

Чтобы сделать контент лучше на канале, очень важно иметь обратную связь от аудитории и пониманить какой контент ей интересене. Уделите 5 минут чтобы ответить на несколько вопросов
источник
2019 June 08
Android Broadcast
#Test #Kotlin #DSL

Kotlin DSL, Fixtures и элегантные UI тесты в Android

Рассказ о том как Kotlin DSL помог эффективнее писать UI тесты в HeadHunter
источник
Android Broadcast
#Test #Coroutines

Android Testing Codelab теперь содержит информацию про корутины

Теперь в официальной codelab по тестированию на Android можно найти следующую информацию:
👉 Как создать настроить тест корутин
👉 Когда использовать runBlockingTest
👉 Как тестировать Architecture Components
👉 Как использовать TestCoroutineDispatcher для приостановки выполнения корутин
источник
Android Broadcast
#Architecture #DynamicFeature #Modularization

Patterns for accessing code from Dynamic Feature Modules

Модуляризация и динамическая доставка модулей - это самый трендовые направления в архитектуре Android направлений. Проблема динамических модулей в том, что код основного приложения не знает о коде в динамическом модуле.

Решение проблемы в лоб - использование рефлексии. Но это решение влияет на производительность, особенно на старых устройствах. Какие решения можно использовать помимо рефлексии:
👉 ServiceLoader
👉 Интеграция с Dagger 2 или Koin 2
👉 Выделение интерфейса для взаимодействия c динамическим модулем из основного путем создания общего модуля. В основной модуль будет подключаться как compileOnly зависимость, а в динамический - implementation.

В статье рассматривается как реализовать эти подходы (все кроме последнего) и даются советы по модуляризации вашего приложения.
источник