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

1

Мне нужно загрузить запись данных из локальной БД на сервер, которая также содержит видеофайл размером около 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), когда приложение убито, и выполнить вышеупомянутую задачу загрузки.

Теги:
broadcastreceiver
file-upload
android-workmanager
android-jobscheduler

1 ответ

1
Лучший ответ

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

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

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

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

  • 0
    спасибо за предложения! но, как я уже упоминал, для обнаружения изменений в сети указанная вами ссылка будет работать до Oreo, но не в Pie, так как CONNECTIVITY_ACTION устарела в API 28. поэтому я ищу много надежного решения для этого, которое работает в Pie. Кстати, вы только что переименовали свой профиль от Рика?
  • 0
    Ссылка, которую я дал, говорит о CONNECTIVITY_ACTION только для уровня API ниже 21. Но вы определенно можете использовать ConnectivityManager.registerNetworkCallback или registerDefaultNetworkCallback даже в API 28 ( ссылка ), и да, я переименовал свой профиль в Girish (мое настоящее имя), чтобы сделать его более личным потрогай :)
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню