TGViewer
Android Broadcast Android Broadcast @android_broadcast · 14.5K subscribers
Post #10067 11.8K
🤖 Samsung убивает процесс во время Custom Tab, даже когда Google обещал защиту через KeepAliveService

Команда Android в Банки.ру полторы недели дебажила Seamless-авторизацию (вход по номеру через HTTP Header Enrichment): на iOS всё стабильно, на Android соединения рвались случайным образом. Логи врали, таймаут без причины, снифать мобильный трафик оператора нельзя, а сам оператор банил номер за десятки попыток авторизации подряд.

Причина не в бэкенде и не в DNS. Когда открывается Custom Tab для SSO, Activity приложения уходит в onPause() → onStop(). По документации Chrome, браузер должен поднимать process importance приложения через bound KeepAliveService, и процесс не попадает под сетевые ограничения. Но проприетарные слои энергосбережения Samsung и Xiaomi этот механизм игнорируют и убивают процесс по таймеру, не глядя на bound services. У Huawei логика другая — он смотрит на реальный сетевой трафик и не трогает активный процесс, поэтому там всё работало стабильно.

Фикс — ForegroundService с типом shortService:

override fun onCreate() {
super.onCreate()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
startForeground(
NOTIFICATION_ID,
createNotification(),
ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE,
)
} else {
startForeground(NOTIFICATION_ID, createNotification())
}
}

`shortService доступен с Android 14 (лимит ~3 минуты, для 10–15 секунд поллинга с запасом), на более старых версиях работает как обычный ForegroundService. Процесс получает importance PERCEPTIBLE_APP_ADJ, и даже Samsung не трогает foreground service на One UI 6+.

‼️ ВАЖНО: сервис стартует и работает, даже если пользователь запретил приложению уведомления —
POST_NOTIFICATIONS` для запуска foreground service не требуется, просто плашка не появится в шторке.

Хороший повод лишний раз не доверять только официальной доке по process lifecycle и тестировать не на одном Pixel, а хотя бы на паре вендоров с разной агрессией энергосбережения.

🔗 Полная статья — там же разбор всех отвергнутых гипотез (DNS, оператор, регион) и код привязки к жизненному циклу SSO.

#Android #AndroidDev
  • 👍 115
  • 👎 9
  • ❤ 4
  • 🔥 3
  • 👏 2
More from @android_broadcast
  1. Sep 25, 2026🚀 Вышел WorkManager 2.12.0 👉 Новое экспериментальное Work Metrics API для изучения истор…
  2. Sep 25, 2026🚀 Вышел androidx.navigation3 1.2.0. И этот как раз допил того, что надо в реальных кейсах…
  3. Sep 25, 2026🚀 Google готовит библиотеку AndroidX Backup Test (пока только первая альфа) для тестирова…
  4. Sep 24, 2026Android Broadcast pinned a photo
  5. Sep 24, 2026🐘 Вышел Gradle 9.8.0 Что нового 👉 Поддержка Java 27 👉 Улучшили отображение ошибок в лог…
  6. Sep 24, 2026🚀 Google выкатила первую реализацию A2UI на Compose (пока в Альфе) Решение от Google уже…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →