Android Broadcast
14.4K subscribers
3.68K photos
367 videos
11 files
6.1K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
#Service #Background

Pitfalls of a foreground Service lifecycle от Maciej Witowski

Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.

Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.

Основные правила при работе с Foreground Service:
1️⃣ Не вызывайте Service.startForeground() слишком рано
2️⃣ Вызывайте Service.stopSelf() после startForeground()
3️⃣ Останавливайте Service только из него самого

Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢

Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().
#Service

Android Foreground Service Restrictions

Разбор особенностей работы Foreground Service (которые с Android 8 являются единственным способом работы приложения в фоне). Вендоры нас все также "радуют" и блокируют service, даже если он foreground.

В статье рассказывает про проблемы и как ее решали (нужно запрашивать добавлять приложение в исключение для работы в фоне)
#service

The “misbehaving” foreground service in Android (5 мин)

История как приложения крешится при запуске Foreground Service, если запустить его асинхронно (не из главного потока). Решение простой - пост на Handler или можно coroutine в Dispatchers.Main
В Android 15 Foreground Service типов dataSync и mediaProcessing будут ограничены лимитом 6 часов в течении 24 часового окна. При превышении лимита вызовется новый callback метод Service.onTimeout() и надо будет остановить Service. Лимит не для каждого приложения, а для всех приложений с такими типами Service. На замену рекомендуется использовать альтернативные API: WorkManager, shortService и другие типы Foreground Service.

Изменение коснется приложений с targetSdk Android 15

Чем вызвано такое решение я не понимаю и почему также выбрано именно такое ограничение по времени. В реале я не знаю как много происходит синхронизаций данных и может 6 часов действительно много, а длинные окна синхронизации делают зловреды

#android15 #service
👍10
До Android 15 приложения с разрешением SYSTEM_ALERT_WINDOW могли запускать Foreground Service даже если приложение в фоне, теперь правила меняются. В Android 15 теперь еще нужно будет иметь видимое окно (пометить его флагом TYPE_APPLICATION_OVERLAY)

#android15 #service
👍7
Media is too big
VIEW IN TELEGRAM
📺 Как запускать работы в фоне на Android (26 мин)

В Android ввели много ограничений на запуск работы в фоне, как долго она может выполняться и когда запускается. Я собрал всю информацию воедино, чтобы рассказать вам про актуальные API и для каких задач что выбирать.

#AndroidBroadcast #workmanager #service
Please open Telegram to view this post
VIEW IN TELEGRAM
36👍24🔥7👎1