Мне нужно загрузить запись данных из локальной БД на сервер, которая также содержит видеофайл размером около 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), когда приложение убито, и выполнить вышеупомянутую задачу загрузки.
JobScheduler
ожидания JobScheduler
или WorkManager
составляет 10 минут. Если загрузка занимает больше времени, вы должны использовать Foreground Service!
Учитывая ограниченные ресурсы устройства, начиная с Android 8.0, Google предпринял некоторые строгие меры в управлении фоновыми задачами для приложения. Для любой длительной задачи приложения должны использовать Foreground Service
чтобы пользователи всегда знали об этом.
Поэтому после планирования вашей задачи с помощью WorkManager
или JobScheduler
вы можете запустить Service
JobScheduler
, в которой вы можете выполнять процесс загрузки видео. (ссылка)
и в вашей Service
вы можете использовать ConnectivityManager.registerNetworkCallback
для прослушивания сетевого подключения. (ссылка)
ConnectivityManager.registerNetworkCallback
илиregisterDefaultNetworkCallback
даже в API 28 ( ссылка ), и да, я переименовал свой профиль в Girish (мое настоящее имя), чтобы сделать его более личным потрогай :)