TGTGInsighttelegram intelligenceLIVE / telegram public index
← () => "翠楼屋"

TGINSIGHT SIMILAR POSTS

查找相似内容

Source channel @lambdaexpression · Post #206 · 4月20日

前段时间一直被MajdataPlay的外键输入问题困扰:有玩家反映majplay会无征兆地出现拖判和吃音,但是内屏一切正常 因为我是第一次接触游戏开发,IO这方面也完全没经验 一开始我和bb本怀疑是线程调度的问题,即:IO线程时间片被其他线程挤占了,导致IO线程无法及时处理HID设备回报。为了验证这个猜想,我们尝试提高了IO线程的优先级,照旧 接下来我怀疑是我那套框架有问题:majplay是根据上一帧与这一帧的按键状态判断按键是不是"click"。为此我重写了这部分的实现,改进了IO线程与主线程之间的交互,问题照旧....... 到这里我已经怀疑这不是majplay的锅:IO线程没有任何异常,IO线程与主线程的交互没有问题,Note判定逻辑也没有问题,那就是设备确实没有回报给majplay或者设备发过来的回报中按键确实没有按下,但是大佬说hdd没有这种问题.....(人已经快崩溃了,这完全看不透也摸不着,因为我用单片机模拟玩家打高速纵连是完全没有问题的,我在家里用手台测试也没有问题) 到最后,bb本灵光一闪,说有没有可能是led刷新率过高,把按键控制板干爆炸了?我们让大佬把led刷新间隔从16ms改成100ms,吃音问题瞬间没有了,无语了 。。。。。。。。。。。。。。。。。。。。 adx是一个控制板同时管理按键和led,为什么我没有遇到吃音问题呢,因为我的手台不是adx的... #dev

Hashtags

Results

找到 16 条相似帖子

搜索 #androidjetpack

当前筛选 #androidjetpack清除筛选
Android Broadcast

@android_broadcast · Post #9495 · 2025/09/11 06:14

🚀 Вышел Room 2.8.0 Самая важная (она и единственная) фича свежего релиза - получение SupportSQLiteDatabase, являющегося оберткой над RoomDatabase с SQLiteDriver. Честно, не знаю кому это пригодится, поэтому будет полезно узнать от вас в комментариях практический опыт. Менее масштабные, но всё же важные изменения: 👉 minSdk подняли с 21 до 23 👉 Добавили поддержку KMP таргетов: watchOS и tvOS 🛠 Исправили баги #android#jetpack#androidjetpack

Android Broadcast

@android_broadcast · Post #9971 · 2026/04/23 15:14

⚙️Jetpack Compose 1.11 — стабильный релиз! 🚀 Что нового: 👉 Визуальная отладка переходов Shared Elements 👉 Переработанная поддержка трекпадов — теперь работают как мышь и распознают жесты 👉 Preview Wrappers для более быстрой работы с превью 👉 Host Defaults для KMP-проектов 👉 Testing APIs v2 для корутин 👉 Экспериментальные API: Styles, MediaQuery, Grid, FlexBox Подробности по каждому пункту — отдельными постами в @compose_broadcast #Compose#Android#AndroidJetpack

Android Broadcast

@android_broadcast · Post #9526 · 2025/09/25 08:07

🚀Вышла новая Jetpack библиотека - Security State Provider (пока в статусе Альфа) Основная цель библиотеки — предоставить действительные (actionable) данные о состоянии безопасности устройства и его компонентов, в частности: 👉 Версии обновляемых компонентов (updateable system components). 👉 Наличие применённых исправлений безопасности (security patches / applied fixes). 👉 Общий “security state” — то есть агрегированное представление безопасности системы. То есть, библиотека даёт вам API, чтобы “спросить у Android”: насколько актуальна система, есть ли уязвимости, какие компоненты нуждаются в обновлении. Она не заменяет шифрование/криптографию (как, скажем, security-crypto), но с дополняет стек безопасности: помогает принимать решения на основании состояния платформы. #android#androidjetpack#безопасность

Android Broadcast

@android_broadcast · Post #9525 · 2025/09/25 07:40

🤖Вышел Jetpack Window 1.5.0 Что нового: 👉WindowSizeClass появились разделения для больших (Large - от 1200 до 1600) и очень больших (XLarge - более 1600 dp) экранов 👉 Получение WindowMetrics теперь работает с Application Context, а не только с UI Context 👉 Добавили API для автоматического сохранения и восстановления статуса встраивания Activity при перезапуске процесса 👉 Удалили экспериментальное API WindowInsets #android#androidjetpack#jetpackupdate

Android Broadcast

@android_broadcast · Post #9655 · 2025/11/06 09:45

🚀Вышел Core SplashScreen 1.2.0 Что нового: 🌙 Добавлен атрибут isLightTheme для тем SplashScreen — можно корректно выбирать оформление под светлую/тёмную тему 🖼 Иконка загрузки теперь корректно подтягивается через AppCompatResources (улучшена поддержка ресурсов и векторных изображений) 👉 Убрали ручное объявление обращения к новым API — теперь всё автоматически моделируется при сборке с AGP ≥ 7.3 и R8 ≥ 3.3 🐘 Для AGP 8.1 и выше — всё работает “из коробки” без дополнительных настроек ⚙️ (рекомендуется обновление до этой версии AGP или выше) #android#jetpack#androidjetpack#jetpackupdate

Android Broadcast

@android_broadcast · Post #9574 · 2025/10/20 10:06

🤖Как проверить, какие комбинации фичей поддерживает камера смартфона Современные смартфоны умеют снимать с HDR, 120 FPS и стабилизацией, но вот какая комбинация этих фич реально доступна — загадка. Например, стабилизация часто работает только при 1080p, а 60 FPS не всегда доступны в 4K. С выходом Jetpack CameraX 1.5 появилось API GroupableFeature и новые параметры для SessionConfig, которые позволяют из кода проверить, какие функции камера может использовать одновременно. // Пример проверки неподдерживаемых комбинаций val unsupportedFeatures = mutableSetOf<GroupableFeature>() val appFeatureOptions = setOf(HDR_HLG10, FPS_60, PREVIEW_STABILIZATION) appFeatureOptions .filterNot { it in currentFeatures } .filter { featureOption -> cameraInfo.isFeatureGroupSupported( SessionConfig( useCases = useCases, requiredFeatureGroup = currentFeatures + featureOption ) ) } .forEach { unsupportedFeatures.add(it) } Так можно заранее отсеять неподдерживаемые сочетания — например, когда HDR и стабилизация не работают вместе при 60 FPS 🎥 Подробнее в статье (EN) #android#camerax#Jetpack#androidjetpack

Android Broadcast

@android_broadcast · Post #9993 · 2026/05/19 06:17

🚀Jetpack Telecom 1.1.0 добавил то, чего не хватало VoIP-приложениям с самого начала — историю звонков прямо в системном дайлере. До этого момента пропущенный звонок в Telegram или любом другом VoIP-приложении требовал переключиться в само приложение, найти вкладку с историей и перезвонить оттуда. Теперь это можно делать прямо из нативного дайлера Android. Работает через два новых механизма. Первый — интеграция лога звонков. Приложение регистрирует звонки через TelecomManager.addCall, и они автоматически попадают в системную историю. Для обратного звонка нужно зарегистрировать intent-фильтр на TelecomManager.ACTION_CALL_BACK и правильно обработать EXTRA_UUID, который система отдаёт вместе с вызовом. UUID генерирует CallControlScope.getCallId в момент регистрации звонка — его и нужно хранить, чтобы потом разрезолвить детали вызова. Второй механизм — исключение из лога. Не каждый звонок стоит светить в системной истории, и теперь это явно контролируется через флаг isLogExcluded = true в CallAttributesCompat. Например, эфемерные или приватные звонки можно просто не записывать. ‼️ ВАЖНО: фичи доступны только на Android 16.1 (SDK 36.1) и выше. Кроме того, нативные дайлеры используют package allowlist для контроля того, какие VoIP-приложения отображаются в истории. Роллаут идёт поэтапно, первым подключился Google Meet. Для локального тестирования Google рекомендует Telecom Sample Dialer из platform-samples. Меня радует сам вектор: Google последовательно закрывает разрыв между VoIP и нативной телефонией. Жаль, что allowlist пока ограничивает возможности сторонних приложений. Печально то, что это делают так поздно, когда звонки не по телефону делают уже 5–10 лет. 🔗 Источник: android-developers.googleblog.com #Android#Telecom#AndroidJetpack

Android Broadcast

@android_broadcast · Post #9809 · 2026/01/19 11:53

🚀Google взялась за упрощение Picture‑in‑Picture PiP на Android долго был зоопарком: разный API на версиях, разный UI‑стейт, много if (SDK_INT…) и бойлерплейта. Новая Jetpack‑библиотека androidx.core:core-pip как раз и создана, чтобы это спрятать: она выравнивает вызовы PiP между версиями Android, даёт единый способ задавать параметры (особенно для видео/плееров), объединяет разрозненные колбэки состояния PiP и уменьшает количество кода за счёт готовых пресетов действий для типовых сценариев. Требования: обновляем Activity Чтобы всё это заработало, мало просто подключить core-pip — нужно обновиться до свежей Activity 1.13.0 (пока в альфе). В этой версии есть новые API для отслеживания состояния PiP (PictureInPictureUiStateCompat и слушатели), на которых удобно строить логику поведения UI, когда окно уходит в PiP или, например, «прячется» в угол. // Пример кода: реагируем на состояние PiP class PlayerActivity : ComponentActivity() { private val pipUiStateListener = Consumer<PictureInPictureUiStateCompat> { state -> if (state.isStashed) { /* спрятать контролы плеера */ } else { /* показать контролы плеера */ } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... инициализация UI / плеера ... addOnPictureInPictureUiStateChangedListener(pipUiStateListener) } override fun onDestroy() { removeOnPictureInPictureUiStateChangedListener(pipUiStateListener) super.onDestroy() } } 🔗 Подробности про библиотека в документации #Android#AndroidDev#AndroidJetpack#PIP

Android Broadcast

@android_broadcast · Post #9654 · 2025/11/06 09:40

🚀 Вышел SavedState 1.4.0 — теперь с поддержкой nullable типов Saved State — это библиотека Jetpack, которая помогает сохранять и восстанавливать состояние при пересоздании, например из-за изменений конфигурации в Android или при выгрузке процесса системой. Поддерживает Kotlin Multiplatform Вышел androidx.savedstate:1.4.0, и в этом обновлении основное внимание уделено улучшению API. Ключевое изменение - добавлена нативная поддержка nullable типов в SavedStateRegistryOwner.saved, а также в функциях encodeToSavedState() и decodeFromSavedState() — теперь можно напрямую сохранять и восстанавливать null-значения без костылей. // Теперь это работает корректно без дополнительных проверок. var name: String? by savedState(saved = "name", default = null) #android#jetpack#kotlin#kmp#jetpackupdate#androidjetpack

Android Broadcast

@android_broadcast · Post #9572 · 2025/10/18 11:35

Вот реальная история, как знание механики работы ViewModel спасло мне вечер 👇 У меня приложение на Compose и Jetpack Navigation 3 (работает на основе состояния Back Stack). Экран «Навигатор файлов» открывает папки рекурсивно: по сути это тот же экран, но с другими данными. Все данные — из одной и той же ViewModel.❗️Баг: при переходе в папку навигация срабатывает, UI не меняется. Современные ИИ подсказали общие вещи, но не помогли — промты, видимо, подвели (тут мне ещё надо прокачать знания) 🙂 Вспомнил ключевой факт про архитектуру: 👉 Все ViewModel живут в ViewModelStore. 👉 В пределах одного ViewModelStoreOwner (Activity/Fragment/NavBackStackEntry) получение ViewModel по умолчанию идёт по типу. 👉 Если нужно несколько экземпляров одного типа на одном owner’е — используем key. Решение в одну строку — привязать ключ к ViewModel, связанный с текущей папкой: @Composable fun FileNavigator( folderId: Id, modifier: Modifier = Modifier, ) { // новый folderId → новый экземпляр ViewModel → новый UI-стейт val viewModel: FileNavigatorViewModel = viewModel( key = "files(rootId='$folderId')" ) // ... } Мини-чеклист, если ловите такой баг 👉 Один экран используется повторно с разными параметрами? → Нужен key. 👉 Меняется route, но owner тот же? → key обязателен. 👉 Используете Hilt/Koin? → У этих функций тоже есть параметр key (hiltViewModel(key=...), koinViewModel(key=...)). 👉 key должен детерминированно зависеть от входных данных (например, folderId). 👉 При навигации назад убедитесь, что ViewModel освобождается ожидаемо. Ещё нюанс - если у вас сложная иерархия графов, проверьте, к какому ViewModelStoreOwner вы реально привязаны. Рекомендую посмотреть мои видео по теме: 📹Разбор Jetpack Navigation 3 🪙Полный разбор Jetpack ViewModel в Android и Kotlin Multiplatform #android#compose#androidjetpack#viewmodel#архитектура

Android Broadcast

@android_broadcast · Post #9588 · 2025/10/23 10:19

🚀Вышел Jetpack WorkManager 2.11.0 Что важного в новой версии: ❗️ minSdk: 23 (Marshmallow). Lollipop (API 21–22) больше не поддерживается. 🎉 Новое API: setRemoteSessionTimeoutMillis() в Configuration.Builder — задаёт время жизни сессии RemoteWorkManager после последнего использования. class App : Application(), Configuration.Provider { override fun getWorkManagerConfiguration(): Configuration { return Configuration.Builder() // Сколько живёт RemoteWorkManager-сессия после последнего использования .setRemoteSessionTimeoutMillis(TimeUnit.MINUTES.toMillis(5)) .build() } } 🎉 Тестирование: TestDriver.stopRunningWorkWithReason(...) — можно останавливать выполняющуюся работу с указанием причины. Зачем: удобно эмулировать внешние условия (остановку системой/приложением) и проверять, что код корректно реагирует на «принудительное завершение». // Arrange val request = OneTimeWorkRequestBuilder<MyWorker>().build() WorkManager.getInstance(context).enqueue(request).result.get() // Act val testDriver = WorkManagerTestInitHelper.getTestDriver(context)!! testDriver.stopRunningWorkWithReason( request.id, /* reason */ 0 // укажите код причины, например ваш тестовый/константу из проекта ) // Assert — далее проверяете ожидаемое состояние 🛠 Также сделали исправление багов #android#jetpack#workmanager#jetpackupdate#androidjetpack

Android Broadcast

@android_broadcast · Post #9708 · 2025/12/01 06:36

‼️Google отменяет Compose Material Icons С релизом Compose Material 3 — версии 1.4.0 Google сделала радикальный шаг: библиотека androidx.compose.material.icons исключена из Material3 и больше не рекомендуется к использованию. Что произошло 👉 Material Icons удалены из актуального релиза Material3 1.4.0 👉 Поддержка библиотеки прекращена 👉 Можно подключить вручную, но это временная мера для тех, кто не успел мигрировать ❌ Основная причина отказа - негативное влияние на скорость сборки. Библиотека Material Icons тащит весь огромный набор иконок. Это ощутимо увеличивает build time крупных Android и Compose Multiplatform проектов. Google предлагает переходить на Vector Drawable XML в Android или Compose Multiplatform ресурсах. Скачивайте иконки с вкладки Android на странице Material Symbols и храните в ресурсах проекта Преимущества использования Material Symbole: ✔️ актуальный набор иконок ✔️ минимальный вес и отсутствие лишних зависимостей ✔️ предсказуемое время сборки ✔️ лучший контроль над ресурсами проекта ❗️ Обновлений библиотеки Material Icons не будет! Источник - официальная документация Android Jepack Благодарю подписчика Evgeny F. за то, что обратил внимание на изменение. #Android#AndroidJetpack#Material3#Compose#CMP

12
上一页第 1/2 页下一页