Обложка канала

Android Broadcast. Страница 180

Качественная выборка Android Dev новостей, тезисы важных новостей и статей, личное мнение

  • 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 и тестов
  • Android Broadcast

    #AlarmManager

    Using AlarmManager like a pro

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

    В статье описывается решения как правильно восстанавливать alarm при их затирании системой
  • 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)
    }
  • Реклама

  • Android Broadcast

    А Kotlin уже три годика 🎉
  • Android Broadcast

    #ThreeTen #Backport #JakeWharton

    ThreeTenABP 1.1.2

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

    #LibUpdates #ButterKnife #JakeWharton

    ButterKnife 10.1.0 was released

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

    #Architecture #RIBs

    RIBs - Uber's cross-platform mobile architecture framework

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

    Остается ждать насколько она приживётся
  • Android Broadcast

    #IoT #AndroidThings

    An Update on Android Things

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

    #R8 #Optimizations #String

    R8 Optimization: String Constant Operations

    Продолжение серии статей от Jake Wharton о оптимизациях в R8. В новой статье рассказывает о оптимизация строковых констант:
    👉 Операции со строками
    👉 Встраивание
    👉 Оценка эффективности оптимизаций
  • 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

    #Kotlin #NullSafety

    Null is your friend, not a mistake

    Null - это бич Java разработки или нет? Очень неприятно когда у вас падает NPE 😞. Чтобы это исправить было сделано много разных решений:
    👉 @Nullable, @NonNull аннотации
    👉 Optional Java 8
    👉 Невозможность работы с null, например RxJava 2 типы не могут эмитировать null значения
    👉 Куча if(value != null)
    👉 Статические анализаторы кода

    Все решения имеют свои плюсы + работают не всегда.

    Kotlin решил эту проблемы намного изящнее все типы делятся на Nullable и NonNullable, который четко определяют можно ли быть у вас null значение в типе и при обращение будет заставлять обрабатывать.

    Роман Элизаров (папка Kotlin Coroutines) в статье рассказывает почему null - это не есть зло и как Kotlin эффективно организовал работу с такими типами значений!
  • Android Broadcast

  • Android Broadcast

  • Android Broadcast

    #UI #Design

    State of the Navigation Drawer

    Navigation Drawer присутствует довольно давно в Android приложениях, но он имеет минусы:
    сокрытие навигации с экрана
    разработчики порой его перегружают элементами
    пользователи не видят новый функционал, которая добавляется в приложения

    Как альтернатива Drawer предлагается использовать Bottom Navigation. Он позволяет решить проблемы, присущие Drawer, но также имеет ограничения, например он располагает от 3 до 5 элементов.

    В своих последних приложения Google стала использовать комбинированный подход с Drawer и Bottom App Bar

    Что сейчас имеет место и есть ли универсальное решение? Вопрос как всегда философский и не имеет четкого ответа. В статье автор сделал обзор существующих решений и их эффективности.
  • Android Broadcast

    #Kotlin

    The Argument Over Kotlin Synthetics

    Kotlin Android Extensions призваны упростить жизнь Android разработчиков, они включают в себя:
    👉 View Binding (отказ от findViewById)
    👉 Generation of Parcelable (не надо руками писать реализацию)

    Какова цена за эти удобства? Действительно ли все так удобно. Автор статьи решил рассмотреть почему не стоит использовать View Binding:
    Доступны только из Kotlin
    Не поддерживается Nullability
    Нет гарантий что сгенерированный код будет производительным
    Все находиться в глобальном пространстве имен
    Нет гарантий типов
  • Реклама

  • Android Broadcast

    #ANR

    Причины возникновения ANR и как этого избежать

    Application Not Responding (ANR) - это ошибка, которая возникает в результате приложение не отвечает. Условия возникновения ANR:
    👉События ввода (кнопки, касания экрана и пр.) не обрабатываются 5 секунд
    👉BroadcastReceiver.onReceive() не был обработан за отведенное время (foreground приложение - 10 сек, background - 60 сек)
    👉ContentProvider не завершил выполнение в течение 10 секунд

    Как избежать ANR:
    👉 Вся работа, несвязанная с отображение, должна выноситься в фоновые потоки
    👉 Сложные вычисления производятся в отдельном потоке
    👉 Используйте Handler для взаимодействия между Main/UI потоком приложения и рабочими потоками

    Удобными способами для выполнения операций в фоне является использование библиотек RxJava или Kotlin Coroutines

    В статье также описывается откуда прорастает показ ANR диалога и как он показывается
  • Android Broadcast

    #ANR #Library

    ANR-WatchDog - A simple watchdog that detects Android ANR error and throws a meaningful exception

    Единственный способ для Android приложения поймать ANR - это опубликовать его в Google Play и смотреть за их статистикой в консоле.Очень полезно получать ошибки с ANR во время разработки и тестирования.

    Библиотека ANR-WatchDog призвана решить эту проблема. Она настраивает таймеры на определение того, что ваш Main/UI поток не отвечает. Если такое событие происходит, библиотека выбрасывает ошибку ANRError. При включенном дебагере библиотека отключается.

    Подключение библиотеки
    implementation 'com.github.anrwatchdog:anrwatchdog:1.3.0'

    В Application.onCreate() добавьте
    new ANRWatchDog().start();

    Рекомендую подключать библиотеку только в тестовых сборках вашего приложения и не включать его в production.
  • Android Broadcast

    #Chromium #PWA #TrustedWeb

    Introducing a Trusted Web Activity for Android

    В Chromium 72 официально анонсировали поддержку Trusted Web Activity (TWA). Это позволяет вашему приложению отображать Web контент в Chrome Custom tab или WebView без UI браузера в полноэкранном режиме.