Size: a a a

Android Broadcast

2019 July 13
Android Broadcast
#AndroidQ #Text

What’s new for text in Android Q

Android Q принес ряд оптимизаций для текста:
👉 Перенос слов (hyphenation) отключен по умолчанию в Android Q и AppCompat 1.1.0. На то чтобы рассчитать переносы тратилось около 70% времени из общего времени подготовки текста к отображению
👉 Использования множества шрифтов в одном TextView
👉 Улучшение text spans API: поддержка шрифтов, тени, fontFeatureSettings and fontVariationSettings
👉 Доступ к системным шрифтам: вы можете получить список системных шрифтов
👉 Обновление шрифтов: новый шрифт Myanmar и эмоджи
источник
Android Broadcast
источник
Android Broadcast
#Java #iOS

A plan to bring Java to iOS

Планируется перезапуск над проектом OpenJDK Mobile, цель которого портировать JDK 9 на популярные мобильные платформы: Android, iOS и Windows.

OpenJDK Mobile планирует использовать ahead-of-time компиляцию для создания исполняемых файлов, которые будут запускаться на без виртуальной машины.

Что-то очень попахивает Kotlin Multiplatform Projects 🤔
источник
Android Broadcast
Как вы относитесь к возможности компиляции Java в нативный код?
Окончательные результаты
12%
Уже знаю как применить
40%
Лучше Kotlin Multiplatform Projects
10%
Лучше Flutter/React Native/Xamarin и пр.
38%
Давайте писать только нативный код
Проголосовало: 121
источник
2019 July 15
Android Broadcast
#Dagger #DependencyInjection #Multibinding

Abusing Dagger with Initializers

Dagger - самое популярное решение для Dependency Injection в современной Android разработке. Он имеет множество возможностей, которыми пользуются немногие, а есть и такие которыми пользуются единицы (например Dagger Producers - асинхронный Dependency Injection).

В статье вы сможете подробнее узнать о том, как применить Dagger Multibinding на примере решения задачи выполнения различных инициализаций при запуске приложения с плагинной архитектурой.
источник
Android Broadcast
#AndroidQ #ThermalAPI

Keeping cool in Android Q with the Thermal API

Хотите узнать насколько нагрелся ваш смартфон пока ваше приложение было на нем запущено? А может на основе этой информации оптимизировать нагрузку приложения на устройство? Тогда хорошие новости - в Android Q появилось новое Thermal API, которое позволит вам получить информацию о текущей температуре устройства (PowerManager.getCurrentThermalStatus()), а также подписываться на изменения (PowerManager.addThermalStatusListener()).

P.S. Не все устройства на текущий момент поддерживают такие возможности, так как необходима реализация на уровне HAL от производителя.
источник
Android Broadcast
#AndroidAcademy #Minsk #AndroidQ

Android Academy Minsk: Post Google I/O or what's new in Android

Прошла первая половина лета, а это значит что Android Q выходит на финишную прямую к стабильному релизу в конце лета. Android Academy Minsk организовывает митап, чтобы освежить все новинки, что нас ждёт в следующей версии Android, и что ещё представили свежего на Google I/O 2019.

Когда: 19.00 Пятницу 19 июля
Где: SPACE (Октябрьская 10Б)
Участие бесплатное по предварительной регистрации

Вас ждёт Йонатан Левин, организаторы GDG Minsk и следующие темы:
👉 Новинки Android Q: Scoped Storage, темная тема, новая система навигации, улучшения в безопасности и пр.
👉 Jetpack Compose
👉 Новиник AndroidX: CameraX, Performance Benchmark, Security
👉 In-App Updates
👉 Constraint Layout 2.0 и MotionLayout

Помимо всего этого вас ждет классная компания, возможность задать свои вопросы и обсудить все это за пиццей и пивом.
источник
Android Broadcast
#CodeQuality #KtLint

Вышел KtLint 0.34.0

Вышла новая версия KtLint - утилиты для проверки стиля
Kotlin кода.

В новой версии сделаны следующие изменения:
👉 Поддержка Kotlin 1.3.41
👉 Возможность отключения правил в .editorconfig
👉 Вновь включена настройка no-wildcard-import
👉 Удалена поддержка флагов  --ruleset-repository и --ruleset-update
👉 Наличие пустой строки в конце файла теперь включено по умолчанию
👉 Исправлены баги

В экспериментальных проверках были добавлены:
👉 experimental:annotation - проверяет что несколько аннотаций не находятся на одной строке
👉 experimental:multiline-if-else - проверка структуры if (...) {...}
👉 experimental:package-name - проверяет имена пакетов на отсутсвие _
источник
2019 July 16
Android Broadcast
#GooglePlay #AppBundle #Optimization

16 reasons to publish your apps and games with the Android App Bundle

Еще не начали публиковать свои приложения с помощью Android App Bundle в Google Play? Тогда изучите 16 причин почему это стоит сделать уже сегодня!
источник
Android Broadcast
#AndroidQ

Preparing your app for Android Q

Обзор самых важных изменений в Android 10.0 Q, а также эффектов которые они окажут на ваши приложения и как лучше адаптировать ваше приложение:
👉 Запуск Activity из фона
👉 Ограничение доступа к идентификаторам устройства:IMEI, рандомизация Mac алреса и пр.
👉 Ограничение доступа к местоположению
👉 Новые жесты навигации
👉 Темная тема
источник
Android Broadcast
#Coroutines #Thread #Concurrency #Parallelism

Kotlin coroutines, threads, concurrency and parallelism 101

Довольно наглядное и простое объяснение разнице в работе потоков и Coroutine
источник
Android Broadcast
#AndroidDevSummit

Android Dev Summit 2019 Registration is Open

Открыта регистрация на конференцию Android Dev Summit 2019, которая пройдет 23-24 октября в Google Event Center (MP7), Sunnyvale, CA.

Это вам на отдельные докладики по Android, а полноценная конференция для Android разработчиков!

Билеты бесплатные, но требуется регистрация, результаты которой будут известны до 23 августа.
источник
2019 July 17
Android Broadcast
#Kotlin #Coroutines #Flow

Exceptions in Kotlin Flows

Kotlin Flows - это реализация холодных стримов на основе Coroutine. В новой статье от Романа Елизарова вы сможете узнать о том как правильно обрабатывать ошибки и какие для этого были добавлены операторы в Flow.
источник
Android Broadcast
#Exception #BestPractices

Handling Exceptions: The Easy Way

Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.

Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
источник
Android Broadcast
#Exception #BestPractices

Рекомендуемая стратегия для обработки ошибок:

1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение Activity/Context в Fragment)

2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.

3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку

4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!

Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
источник
Android Broadcast
Стратегия для обработки ошибок
источник
2019 July 18
Android Broadcast
#SQLite #Coroutines #Room #ArchitectureComponents

Threading models in Coroutines and Android SQLite API

В Room 2.1.0 появилась поддержка Coroutine, но особенность их работы в том, что они не гарантируют выполнение всей Coroutine в одном Java потоке. И тут получается проблема - SQLite требует выполнение транзакций в одном и том же потоке.

Как эту проблему решили разработчики Room? Для этого была создана специальная функции withTransaction, которая позволяет выполнять транзакции в БД с помощью Room на основе Coroutine.

В статье вы найдете подробности реализации транзакций SQLite при использовании Coroutine и как можно использовать CoroutineContext.
источник
Android Broadcast
Пример использования RoomDatabase.withTransaction()
источник
2019 July 19
Android Broadcast
#GooglePlay #X64

Migrating to 64-bit

С августа 2019 в силу вступают требования Google Play о том, что каждое приложение должно иметь поддержку 64-битной версии нативных библиотек. Эти требования вводятся для лучшей поддержки современных устройств и обеспечения более высокой производительности.
источник
Android Broadcast
#Kotlin #Awards

Kotlin named Breakout Project of the Year at OSCON

На конференции OSCON (O'Reilly Open Source Software Conference), Kotlin удостоился награды "Open Source Award for Breakout Project of the Year" (самый прорывной open source проект года).

Нет сомнений почему Kotlin получил эту награду. Kotlin значительно изменил мир Java разработки, в особенности на Android, и даже стал основным языком для разработке на этой платформе. Также Kotlin #1 наиболее растущий язык на Github.
источник