Определить состояние сети и загрузить видео данные из фона, когда приложение убито в Android пирог (API 28) - PullRequest
2 голосов
/ 03 апреля 2019

Мне нужно выгрузить запись данных из локальной БД на сервер, которая также содержит видеофайл размером около 30 МБ. Вышеуказанная загрузка происходит, когда сеть становится доступной, даже когда приложение убито. Теперь для обнаружения изменения сети в Android N и выше CONNECTIVITY_CHANGE и CONNECTIVITY_ACTION устарели, поэтому широковещательный приемник бесполезен. также, CONNECTIVITY_ACTION устарела в API 28 (круговая диаграмма).

Многие ответы предлагают использовать JobSchedular для таких задач, но это полезно для небольших загрузок.

ссылался на это: Обнаружение ИЗМЕНЕНИЯ СОЕДИНЕНИЯ в Android 7 и выше, когда приложение убито / в фоновом режиме

WorkManager https://developer.android.com/topic/libraries/architecture/workmanager.html

Итак, как я могу обнаружить изменение сети в Pie (API 28), когда приложение закрыто, и выполнить вышеупомянутую задачу загрузки.

1 Ответ

2 голосов
/ 03 апреля 2019

JobScheduler или WorkManager имеет время ожидания 10 минут. Если загрузка занимает больше времени, вы должны использовать Foreground Service!

Учитывая ограниченные ресурсы устройства, начиная с Android 8.0, Google предпринял некоторые строгие меры в управлении фоновыми задачами для приложения. Для выполнения любой длительной задачи приложения должны использовать Foreground Service, чтобы пользователи всегда знали об этом.

Таким образом, после планирования вашей задачи с помощью WorkManager или JobScheduler вы можете запустить Foreground Service, в котором вы можете выполнить процесс загрузки видео. ( ссылка )

и в вашем Service вы можете использовать ConnectivityManager.registerNetworkCallback для прослушивания сетевого подключения. ( ссылка )

...