Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR
Post #10067
11.8K
🤖 Samsung убивает процесс во время Custom Tab, даже когда Google обещал защиту через KeepAliveService
Команда Android в Банки.ру полторы недели дебажила Seamless-авторизацию (вход по номеру через
Причина не в бэкенде и не в DNS. Когда открывается
Фикс —
`shortService
Хороший повод лишний раз не доверять только официальной доке по process lifecycle и тестировать не на одном Pixel, а хотя бы на паре вендоров с разной агрессией энергосбережения.
🔗 Полная статья — там же разбор всех отвергнутых гипотез (DNS, оператор, регион) и код привязки к жизненному циклу SSO.
#Android #AndroidDev
Команда 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









