Разработчик решил оценить влияние логирования на работу приложения и описал в статье. Проблема только если создаете лишние объекты
#android #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤2🤔1
fun logD(tag: String, messageBuilder: () -> String) {
if (loggingEnabled) {
Log.d(tag, messageBuilder())
}
}
но автор еще не учел проверку уровня логирования:
fun logD(tag: String, messageBuilder: () -> String) {
if (loggingEnabled && Log.isLoggable(tag, Log.DEBUG)) {
Log.d(tag, messageBuilder())
}
}
или прийти к более общей функции
inline fun log(tag: String, level: Int, messageBuilder: () -> String) {
if (loggingEnabled && Log.isLoggable(tag, level)) {
when (level) {
Log.VERBOSE -> Log.v(tag, messageBuilder())
Log.DEBUG -> Log.d(tag, messageBuilder())
Log.INFO -> Log.i(tag, messageBuilder())
Log.WARN -> Log.w(tag, messageBuilder())
Log.ERROR -> Log.e(tag, messageBuilder())
else -> Log.d(tag, messageBuilder()) // fallback
}
}
}
#android #производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🤔4❤3
Еще одна рекомендация - используйте минификацию кода через R8/ProGuard чтобы удалить весь код логирования. Ничего лишнего не уйдёт в логи, а также повысите скорость работы
Добавьте в правила следующие инструкции
# Удаляем Log.v()
-assumenosideeffects class android.util.Log {
public static int v(...);
}
# Удаляем Log.d()
-assumenosideeffects class android.util.Log {
public static int d(...);
}
# Удаляем Log.i()
-assumenosideeffects class android.util.Log {
public static int i(...);
}
Подробнее про инструкцию
assumenosideeffects
читайте в документации#android #proguard #r8 #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53❤3🤔1
В Android 16 QRP1 появилась поддержка десктопного режима при подключении внешних дисплеях. Включается режим плавающих окон, а значит приложения смогут иметь произвольный размер, управление перейдет в мышку и клавиатуру (а смысл иначе от внешнего дисплея?)
Совсем уже не новинка в мире Android, но какому количеству людей это будет необходимо? Делитесь своим мнением в комментариях
#android #android16 #desktop
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍14🔥8
Используете подход Documentation-as-Code ? (не про документация в коде)
Anonymous Poll
13%
Да
14%
Нет
58%
Что это?
7%
Не пишу документацию вокруг проекта
1%
Другой вариант
7%
Не участвую в опросе
❤4
В этот раз вас жду багфиксы: Room 2.7.2 и WorkManager 2.10.2, а также первая RC версия Benchmark Version 1.4.0
#android #androiddev #jetpack #jetpackupdate
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10
Показали первую альфа версию Jetpack Test Uiautomator Shell - решения для выполнения команд в терминале. Фактически это backport UiAutomation.executeShellCommandRwe из API 34 (Android 14).
#android #androiddev #тестирование #автотесты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤2🔥2
Forwarded from Kotlin Multiplatform Broadcast
Все сессии можно найти в расписании. Пока только на сайте, но там встроен YouTube плеер, так что позже выпустят плейлист. В @kotlin_broadcast буду выкладывать доклады и рассказывать самое интересное
#kotlin #kotlinconf
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26❤4
This media is not supported in your browser
VIEW IN TELEGRAM
В новом видео погружаюсь в особенности того как работает Context, а именно:
👉 какие типы Context бывают
👉 почему Application класс != Application Context
👉 как Android ОС создает экземпляр Context и передает его в компоненты приложения
👉 советы по работе с Context
Подписку на видео можно также оформить через Telegram
#AndroidBroadcast #android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34🔥21🤯7❤3
Когда разработчик использует NotificationCompat.Builder для создания уведомлений из Android приложения, может показаться, что прямого контроля на внешний вид нету 🤯 На самом деле формируется не визуальный компонент, а объект данных, который описывает что есть в уведомление.
Этот объект — это просто структура, сериализуемая через Parcelable. Он передаётся в системный процесс через Binder — механизм межпроцессного взаимодействия в Android. А вот принимать и интерпретировать этот объект будет специальное системное приложение — SystemUI.
Уведомления отображаются не Android сам по себе, а конкретное приложение, которое называется
com.android.systemui
. И это приложение полностью отвечает за то, как будет выглядеть уведомление. Оно решает, какие поля отобразить, где их разместить, какой стиль применить, как будет выглядеть кнопка, будут ли видны иконки — и многое другое. Часть из данных может игнорироваться.Вот почему одно и то же уведомление может выглядеть совершенно по-разному на разных устройствах и версиях ОС. Один и тот же вызов setContentTitle("Новость") может дать совершенно разный результат на Pixel с чистым Android и на Xiaomi с MIUI. Более того, даже RemoteViews, которые позволяют задавать кастомные layout’ы для уведомлений, могут игнорироваться или ограничиваться прошивками производителей.
Именно по этой причине я не люблю когда в уведомления вставляют Custom View, который выбивается из стиля и часто портит визуал системы и поведение. Мечтаю чтобы его поскорее запретили в Android. Пожалуйста, хотя бы в Android 17 🙏
Запомните
#android #androiddev
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍70❤6
Что из перечисленного обязательно должно быть свойством чистой функции в функциональном программировании?
Anonymous Quiz
2%
Она может изменять глобальные переменные
93%
Она всегда возвращает один и тот же результат при одних и тех же входных данных
1%
Она может записывать данные в файл
4%
Она может вызывать другие функции с side эффектами
🔥16❤2
🏗 Функциональное программирование в Android. Знакомство с парадигмой (21м)
Первая статья из серии про как построить архитектуру Android приложения в функциональном стиле. Стек: Kotln; Jetpack Compose; одна из UDF-архитектур (Redux, TEA, MVI); ArrowKt; Coroutines + Flow.
В начале рассматривают функциональную парадигму и отличия ее от других подходов (императивный и декларативный)
#android #архитектура
Первая статья из серии про как построить архитектуру Android приложения в функциональном стиле. Стек: Kotln; Jetpack Compose; одна из UDF-архитектур (Redux, TEA, MVI); ArrowKt; Coroutines + Flow.
В начале рассматривают функциональную парадигму и отличия ее от других подходов (императивный и декларативный)
#android #архитектура
🔥22❤2🤔2🤯1
Forwarded from Kotlin Multiplatform Broadcast
Что нового в релизе языка:
👉 Превью context parametr
👉 Non-local break и continue теперь stable
👉 Kotlin/JVM: изменения в генерации метода по умолчанию
👉 Kotlin/Native: улучшения в управлением памятью
👉 Kotlin/Wasm: wasmJs таргет отделили от js таргета
👉 Base64 стало Stable
#kotlin
Please open Telegram to view this post
VIEW IN TELEGRAM
❤39👍5🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Поддерживается Android 7.0, а на Android 13 и выше используются AGSL шейдеры, что повышает производительность и добавляет блюр.
Автор библиотеки - подписчик канал и буде рад звезде на GitHub и вашему мнению по коду решения в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72🔥40🤯25❤3
🤯 AI ломает R8 и восстаналивает код после защиты
Разработчик провёл эксперимент по восстановлению обфусцированного когда с помощью GPT 4o ичуда не произошло. AI смог сделать читаемые имена переменных и функций, сделать форматирование кода. С Compose кодом вообще ничего дельного не вышло. Теперь надо думать и про угрозу AI взломов усложнит жизнь IT.
Запрос на восстановление кода
🔗 Альтернативная ссылка на статью
#android #r8 #ai
Разработчик провёл эксперимент по восстановлению обфусцированного когда с помощью GPT 4o и
Запрос на восстановление кода
Using the R8 algorithm, deobfuscate this class and translate it into its real-world context.
🔗 Альтернативная ссылка на статью
#android #r8 #ai
🤔34🤯16👍2❤1
Разработчик решил реализовать простую затею - обрезать видео на основе выбранного отрезка текста из расшифровки дорожки. Использовал Jetpack Media3 и EventLabs API. ПО итогу вышло приложение
🔗 Альтернативная ссылка тут
#android #androidjetpack #media3 #opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥12❤1🤯1
Forwarded from iOS Broadcast (Андрей Зонов)
Внутри сообщества официально собирается рабочая группа по созданию Android приложений на Swift. Основная цель - добавить и поддерживать Android как официальную платформу для Swift
Задачи рабочей группы:
Общение через Форум Swift для Android и в рабочей группе на форумах Swift. Членство в рабочей группе открыто для всех желающих.
Новость интригующая, хотя в моменте ничего и не даст:
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤔43🤯31❤6🔥4🙏1
Теперь если вы делаете сетевой запрос при уходе приложения в фон, когда вы не используете WorkManager или Foreground Service, то такой запрос будет остановлен с исключением UnknownHostException (стандартно выбрасывается если нет сети или сервер невозможно найти) или другой IOException.
Я отмечу изменений как положительное для пользователей и общего состояния устройства. Google форсирует переход разработчиков API, предназначенные для определенных целей и слежением за выполняемой работой.
Изменение применяется на Android 15 и выше для всех приложений с targetSdk=35+
Источник тут
#android15
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯45👍21❤7
Media is too big
VIEW IN TELEGRAM
Прошла Kotlin Conf и в рамках keynote показали 3 фичи:
Версия на
#AndroidBroadcast #kotlin #kotlinconf25
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍14❤5🤯1