Android Broadcast
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
Show more📈 Analytical overview of Telegram channel Android Broadcast
Channel Android Broadcast (@android_broadcast) in the Russian language segment is an active participant. Currently, the community unites 14 584 subscribers, ranking 8 762 in the Technologies & Applications category and 45 369 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 14 584 subscribers.
According to the latest data from 09 July, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 20 over the last 30 days and by 2 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 46.12%. Within the first 24 hours after publication, content typically collects 23.82% reactions from the total number of subscribers.
- Post reach: On average, each post receives 6 726 views. Within the first day, a publication typically gains 3 474 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 41.
- Thematic interests: Content is focused on key topics such as api, kotlin, gradle, сборка, androiddev.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
Thanks to the high frequency of updates (latest data received on 10 July, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
// Пример запуска EyeDropper
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result -> if (result.resultCode == Activity.RESULT_OK) {
val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
// Обрабатываем полученный результат
}
}
fun launchColorPicker() {
val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
eyeDropperLauncher.launch(intent)
}
#Android #Android17val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
result -> if (result.resultCode == Activity.RESULT_OK) {
val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
// Use the picked color in your app
}
}
fun launchColorPicker() {
val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
eyeDropperLauncher.launch(intent)
}
#Android #Android17Coil - это библиотека для загрузки изображений на Android (и теперь Compose Multiplatform). Название расшифровывается как Coroutine Image Loader — библиотека написана на Kotlin с первого дня и отлично вписывается в современный стек: корутины, Compose, KMP.В новой версии несколько интересных вещей: 🔁 ConcurrentRequestStrategy — теперь можно объединять параллельные сетевые запросы на один и тот же ресурс. По умолчанию отключено и помечено как экспериментальное, но идея хорошая — вместо N одинаковых запросов летит один, остальные ждут результата. 🧵 Асинхронный декодинг JS/WASM — изображения больше не блокируют главный поток браузера. Важно для KMP-проектов с вебом. 🐧 Linux targets — добавили поддержку
linuxX64 и linuxArm64 для non-Compose артефактов.
🎞 Улучшенные переходы в Compose — новый useExistingImageAsPlaceholder позволяет плавно переходить от предыдущего изображения, когда нет placeholder. Мелочь, но визуально приятно.
🎬 Embedded video thumbnails — поддержка встроенных превью для видео.
🔧 coil-lint — добавили Android Lint-правило, которое ловит случайные вызовы kotlin.error() внутри блоков ImageRequest.Builder. Неожиданно полезно.
Зависимости Kotlin 2.3.10, Compose 1.9.3, Okio 3.16.4.
#Android #AndroidDev #KMP #kCMP #ComposeIntentSender
IntentSender - это обёртка над PendingIntent, позволяющая передать право запуска Intent другому приложению или системе. Именно через него работают уведомления, виджеты, shortcuts и межпроцессные вызовы.Так вот, константа
MODE_BACKGROUND_ACTIVITY_START_ALLOWED теперь deprecated. Если где-то передаёте её через ActivityOptions при работе с PendingIntent — нужно мигрировать на MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE. Разница в том, что теперь Activity из фона запустится только если вызывающее приложение видимо пользователю.
val options = ActivityOptions.makeBasic().apply {
pendingIntentBackgroundActivityStartMode =
ActivityOptions.MODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE
}
Найти проблемные места просто — Google обновил lint и StrictMode под новые требования. Запускаете lint, ищете использования MODE_BACKGROUND_ACTIVITY_START_ALLOWED и получаете полный список того, что нужно поправить.
Формально это касается только targetSdk 17+, но лучше не тянуть — сами знаете, как работают дедлайны в Play Console.
🔗 Источник developer.android.com
#Android17 #androiddev #security #activity// build.gradle.kts
dependencies {
detektPlugins("dev.androidbroadcast.rules.koin:detekt-koin4-rules:1.0.0")
}
Требования: Kotlin 2.0+, Detekt 1.23.8+, Koin 4.x
🐱 GitHub Репо
Жду фидбэк — каких не хватает, ложные срабатывания, что настраивается неудобно и всё всё. Пишите в комментариях к этому посту или в Issues репозитория 🙌AppComponentFactory.
AppComponentFactory позволяет задать фабрику, которая будет управлять созданием экземпляров Application, Activity, Service, ContentProvider и BroadcastReceiver. Благодаря этому можно использовать конструкторы с параметрами для этих компонентов и отказаться от полевого инжекта (field injection) или других обходных путей, вызванных ограничениями старых версий Android.
// Создаем свою фабрику
class MyAppComponentFactory : AppComponentFactory() {
override fun instantiateActivity(
cl: ClassLoader,
className: String,
intent: Intent
): Activity {
return when (className) {
MainActivity::class.java.name ->
MainActivity("Hello from factory")
else ->
super.instantiateActivity(cl, className, intent)
}
}
}
``
<!-- Указываем фабрику в манифесте -->
<application
android:name=".MyApplication"
android:appComponentFactory=".MyAppComponentFactory"
... >
...
</application>
// Используем в Activity конструктор с параметром
class MainActivity(private val message: String) : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
println("Message from factory: $message")
}
}
#Android #AndroidDev #Android9MessageQueue — это очередь задач главного потока с которой работает Handler. Каждый Android-разработчик фактически работает с ней каждый день, даже если напрямую не задумывается об этом. Looper берёт из неё сообщения, передаёт их Handler’ам, выполняет UI-обновления, lifecycle-события, обработку ввода, invalidate, работу фреймворков и большую часть межпоточного взаимодействия. По сути, это диспетчер всей работы main thread.Исторически эта очередь почти не менялась около двадцати лет. Внутри она была защищена одним lock’ом. Пока один поток добавлял сообщение, другой не мог работать с очередью. На старых устройствах это не было критично, но на современных многоядерных системах стало появляться всё чаще: background-поток держит lock, планировщик переключает CPU на другие задачи, а UI-поток в этот момент ждёт. В Android 17 мезанизм работы очереди переписали полностью. Новая реализация стала lock-free. Вместо общего lock используются атомарные операции, а сама структура очереди разделена на две части: потоки могут добавлять сообщения без блокировок, а главный поток уже самостоятельно упорядочивает и выполняет задачи. Важное свойство такого подхода — хотя бы один поток всегда может продолжать работу независимо от поведения остальных. Это не обновление из категории «приложение стало быстрее на X процентов». Изменение работает глубже. Оно снижает вероятность случайных блокировок главного потока, уменьшает количество missed frames и делает время кадра стабильнее под нагрузкой. Особенно это заметно в сценариях, где одновременно происходит много фоновой работы: запуск приложения, работа камеры, тяжёлые UI, интенсивные операции в фоне. 🤯 В одном из примеров Google показывают блокировку UI-потока почти на 18 мс только из-за конкуренции за lock — этого уже достаточно, чтобы пропустить кадр на экране 60 Гц, не говорю уже про 120. ‼️ Большинству приложений ничего делать не нужно — улучшение происходит автоматически. Но обратить внимание стоит тем, кто занимается производительностью, анализирует Perfetto-трейсы или использует рефлексию и внутренние поля MessageQueue. Такие вещи могут перестать работать, потому что внутренняя реализация изменилась. На самом деле это интересный сигнал о направлении развития Android. Долгое время оптимизации происходили на уровне API и фреймворков. Сейчас Google всё чаще переписывает базовые механизмы конкурентности самой платформы. И это логично: современные устройства уже редко упираются в вычислительную мощность, чаще — в синхронизацию потоков и contention. MessageQueue находится в центре всей работы UI-потока, поэтому даже небольшие улучшения здесь масштабируются на всю экосистему. 🔗 Больше подробностей про работу механизма можно найти в техническом разборе от Google #Android #Android17
