TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #androidx · 2 posts
Publié 10 mars
🤖AndroidX Tracing 2.0 — поддержка Desktop JVM и Kotlin Coroutines AndroidX Tracing — это библиотека для добавления данных в код, которая позволяет видеть что происходит внутри приложения в профилировщиках вроде Perfetto и Android Studio. До версии 2.0 она была завязана исключительно на android.os.Trace — то есть работала только на Android. Теперь всё изменилось. Версия 2.0 полностью пересматривает подход: 👉Поддержка Desktop JVM — трейсинг теперь работает не только на Android, но и на обычной JVM. Это открывает возможность профилировать host-инструменты, Gradle-таски и shared-код в KMP-проектах. 👉Propagation для корутин — классическая проблема: suspend-функции разрывали трейс на несвязанные куски и было непонятно что к чему относится. Теперь traceCoroutine() прокидывает контекст трейса через корутины автоматически. 👉Метаданные в слайсах — к каждому трейс-событию можно прикрепить аргументы. Видишь слайс в Perfetto и сразу понимаешь с какими параметрами он вызван. 👉Новый формат — Perfetto trace — трейсы совместимы с Android Studio и Perfetto UI из коробки. Новый API выглядит так: val driver = TraceDriver(sink = TraceSink( sequenceId = 1, directory = File("/tmp/perfetto") ), isEnabled = true) driver.use { driver.tracer.trace(category = CATEGORY_MAIN, name = "my_operation") { // твой код } } ⚠️ Пока это только alpha и многих привычных возможностей нету, но будут к релизу Stable версии. #Android#AndroidDev#KMP#AndroidX#Производительность
Publié 4 févr.
🤖 Если используете AndroidX Paging, то вам стоит обновить код. Для лучшего определения позиции на основе которой генерировать ключ для обновления появилось API PagingState.closestItemAroundPosition() override fun getRefreshKey(state: PagingState<Int, UiItem>): Int? { val anchor = state.anchorPosition ?: return null val closestItem = state.closestItemAroundPosition( anchorPosition = anchor, // например, пропускаем разделители/заглушки predicate = { it.isAnchorable } ) return closestItem?.id } #Android#AndroidX