Android Broadcast
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
Ko'proq ko'rsatish📈 Telegram kanali Android Broadcast analitikasi
Android Broadcast (@android_broadcast) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 14 536 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 638-o'rinni va Rossiya mintaqasida 45 100-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 14 536 obunachiga ega bo‘ldi.
25 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -24 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 38.77% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 22.90% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 5 635 marta ko‘riladi; birinchi sutkada odatda 3 329 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 51 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent api, kotlin, gradle, сборка, androiddev kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 26 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
GlobalScope.launch / async
👉 collect / collectLatest без repeatOnLifecycle / flowWithLifecycle
👉 runBlocking (особенно на UI)
👉 async { } без использования Deferred (не поймаете исключения)
👉 Job / SupervisorJob / CoroutineScope без .cancel() в onCleared/onDestroy
👉 захардкоженные Dispatchers.IO/Main/Default
Есть quick-fix’ы (Alt+Enter). Если код внутри ViewModel, сразу подставляет viewModelScope. В Fragment/Activity — lifecycleScope или оборачивает collect в repeatOnLifecycle(STARTED)
Пока плагина нет в Marketplace. Ставится через Gradle:
// сборка плагина и он будет в build/distributions/ ./gradlew buildPlugin // затем поставить плагин из интерфейса IDEИдея хорошая, но не понял одного - почему именно через IDE плагин? Нельзя было сделать Android Lint проверки или еще какой анализатор использовать? Тем более с ИИ сейчас это можно сделать эффективно, а вот IDE у меня уже вообще ушла из использования #Kotlin #Coroutines #AndroidStudio #Android
checkSelfPermission — это только начало
👉 Как обходиться без разрешений через системные пикеры
👉 Google Play политики, которые могут забанить твоё приложение
Разрешения — это не техническая деталь. Это контракт доверия между твоим продуктом и пользователем.
———
Ставь 🔥, если хочешь видеть больше глубоких разборов Android-архитектуры!
🪙 Полный разбор на BoostyAIAB9 получите скидку. Старт нового сезона - 31 августа.ApplicationExitInfo:
- reason == REASON_OTHER
- description содержит "MemoryLimiter:AnonSwap"
Можно ещё повесить TRIGGER_TYPE_ANOMALY в ProfilingManager и автоматически снимать heap dump в момент, когда лимит сработал.
Для локального теста поведения можно использовать adb:
adb shell am memory-limiter status
adb shell am memory-limiter manual <pid> <limit_mb>
adb shell am memory-limiter ignore <uid>|all|none
В Android Vitals и Crashlytics 20.1.0 уже есть отдельные сигналы по этим убийствам. Если у тебя в приложении есть тяжёлые экраны, кэши, игры или foreground-сервисы - следи за метриками.
🔗 Источник - блог Android Developers
#Android #AndroidDev #Android17org.gradle.configuration-cache=true
Самое показательное даже не skills. Билд-система — штука, которая вроде бы должна стоять чуть в стороне от хайпа. И вот Gradle тоже идёт в agentic. Потому что пользователи уже этого хотят, потому что открываются новые способы продвижения, потому что инвесторам это нужно показывать. Даже серьёзные инструменты сейчас вынуждены "кланяться".
🔗 Источник - блог Gradle
#Gradle #AIandroidx.xr.scenecore:scenecore:1.0.0-beta02
- androidx.xr.arcore:arcore:1.0.0-beta02
- androidx.xr.runtime:runtime:1.0.0-beta02
Compose for XR пока ещё 1.0.0-alpha17 (обещают beta скоро).
Тестировать можно на Samsung Galaxy XR или в Android XR Emulator.
🔗 Официальный анонс
#Android #AndroidXR #XR #AndroidDevmediaQuery — лямбда, которая смотрит на текущий UiMediaScope и возвращает boolean. Внутри можно проверять:
👉 windowWidth / windowHeight
👉 windowPosture (Tabletop, Book, Flat)
👉 pointerPrecision (Fine → Coarse → Blunt → None)
👉 keyboardKind (Physical / Virtual / None)
👉 hasCamera / hasMicrophone
👉 viewingDistance (Near / Medium / Far)
Включается одним флагом при запуске приложения:
ComposeUiFlags.isMediaQueryIntegrationEnabled = true
Для размеров, которые дёргаются часто, лучше использовать derivedMediaQuery (обёртка над derivedStateOf):
// Composable code
val narrowerThanMedium by derivedMediaQuery {
windowWidth < WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND.dp
}
val narrowerThanExpanded by derivedMediaQuery {
windowWidth < WindowSizeClass.WIDTH_DP_EXPANDED_LOWER_BOUND.dp
}
when {
narrowerThanMedium -> SinglePaneLayout()
narrowerThanExpanded -> TwoPaneLayout()
else -> ThreePaneLayout()
}
Самый чистый кейс — foldable в tabletop:
// Composable code
if (mediaQuery { windowPosture == UiMediaScope.Posture.Tabletop }) {
TabletopLayout()
} else {
FlatLayout()
}
Это API не замена WindowSizeClass, но удобный единый вход для всего, что меняется в рантайме. Если пишете адаптив под foldable / desktop / TV — возьмите на заметку. Пока не перенесли в Compose Multiplatform.
Документация Media Query API
#Compose #JetpackCompose #Adaptive #UI #AndroidYatagan entry point в api-public. Reflection или codegen подхватываются автоматически, имплементация с генерацией кода имеет приоритет.
👉 Экспериментальный Dagger compatibility mode. Включаешь yatagan.experimental.enableDaggerCompatibility и Yatagan генерит DaggerMyComponent фасады. Старые DaggerMyComponent.create() / .builder() продолжают работать. Поддерживается ядро (components, modules, scopes, multibindings, assisted), без Hilt/Android/producers.
👉 Conditions API почистили: legacy @Condition/@AnyCondition deprecated в пользу @ConditionExpression, @Provides(Conditional(...)) → отдельный @Conditional на методе.
👉 Runtime-конфиг стал declarative (processor options + parameters.properties), убрали глобальный mutable state.
Есть подробный migration guide и даже скилл для агента:
npx skills add yandex/yatagan
Это RC. Compatibility mode экспериментальный — граф лучше провалидировать. Но для тех, кто уже страдает от Dagger на больших проектах и смотрел в сторону Yatagan, порог входа заметно снизился.
🔗 Release Notes
#Android #AndroidDev #DI #YataganWebViewCompat.navigate наконец-то нормальная замена loadUrl. Можно заменять страницу в истории, получать объект Navigation и корректно сохранять/восстанавливать заголовки. Для приложений, где WebView — не просто «открыть ссылку», а нормальный флоу, это давно было нужно.
if (WebViewFeature.isFeatureSupported(WebViewFeature.WEBVIEW_NAVIGATE_EXPERIMENTAL_V1)) {
val params = NavigationParameters.Builder()
.setShouldReplaceCurrentEntry(true) // заменяет текущую запись в истории
.addAdditionalHeader("X-Custom-Header", "value")
.build()
val navigation: Navigation
= WebViewCompat.navigate(webView, "https://example.com", params)
// navigation можно потом матчить в NavigationListener
}
👉 Контроль HTTP-кэша через Profile.getHttpCache. Можно посмотреть квоту и при необходимости подкрутить. Полезно, если много статики, или наоборот — когда кэш только место жрёт.
if (WebViewFeature.isFeatureSupported(WebViewFeature.HTTP_CACHE_MANAGER)) {
val profile = ProfileStore.getInstance().getOrCreateProfile("my_profile")
val httpCache = profile.httpCache // или profile.getHttpCache()
// Посмотреть текущую квоту
val currentQuota = httpCache.quotaBytes
val defaultQuota = httpCache.defaultQuotaBytes
val isDefault = httpCache.isUsingDefaultQuota
// Задать свою квоту (например, 50 МБ)
httpCache.setQuotaBytes(50L * 1024 * 1024)
// Или вернуть автоматическое управление
// httpCache.useDefaultQuota()
}
👉enqueuePreconnect — можно заранее поставить preconnect в очередь, не заставляя WebView стартовать прямо сейчас.
👉 Можно отключить автоматическую загрузку фавиконок (setDownloadFaviconsEnabled). Мелочь, но экономит память и трафик, особенно если иконок много.
👉 Плюс Android Lint, который теперь ругается, если кастомный WebViewClient не переопределил onRenderProcessGone. Полезно, потому рендерер падает регулярно.
🔗 Подробности релиза
#Android #AndroidDev #WebView #AndroidJetpackandroidx.fragment:fragment-*:1.9.0.
Три изменения, которые реально заметны:
👉 Fragment теперь реализует ContextAware. Можно повесить OnContextAvailableListener и выполнить код в момент, когда контекст стал доступен (аналог того, что давно есть у Activity).
👉 У composable AndroidFragment {} появился параметр maxLifecycle. Можно жёстко ограничить lifecycle вложенного фрагмента — удобно в пейджерах, табах и других сложных UI, где не хочется, чтобы offscreen-фрагмент уезжал в RESUMED.
👉 Добавили system tracing lifecycle-событий через Jetpack Tracing. В Perfetto теперь видно, что происходит с фрагментами.
Плюс куча фиксов predictive back и setMaxLifecycle + popBackStack, которые тянулись с 1.8.x.
Если живёте на Fragment + Compose interop — обновляться имеет смысл. Чистый Compose-проект может спокойно пропустить.
#Android #AndroidDev #Jetpack #FragmentTraceDriver + Tracer + TraceSink (можно подключать свои бэкенды).
👉 Настоящая поддержка корутин с отслеживанием suspend/resume и переключений потоков.
👉 Поддержка KMP (Android + JVM).
👉 Существенно ниже оверхед по сравнению со старым android.os.Trace / trace {}.
Старый API не deprecated его по-прежнему рекомендуют для редких критичных событий, которые обязаны попасть в system trace.
🔗 Полные release notes по ссылке
#AndroidDev #Perfromance #AndroidJetpackTraceDriver + Tracer + TraceSink (можно подключать свои бэкенды).
👉 Настоящая поддержка корутин с отслеживанием suspend/resume и переключений потоков.
👉 Поддержка KMP (Android + JVM).
👉 Существенно ниже оверхед по сравнению со старым android.os.Trace / trace {}.
Старый API не deprecated его по-прежнему рекомендуют для редких критичных событий, которые обязаны попасть в system trace.
🔗 Полные релиз-ноты по ссылке
#AndroidDev #Perfromance #AndroidJetpack