Обнаружение изменения подключения, когда приложение убито / в фоновом режиме - PullRequest
1 голос
/ 21 апреля 2019

Я хотел бы определить, когда происходит изменение сети (подключение / отключение), когда мое приложение не на переднем плане , поэтому я могу синхронизировать данные пользователя.

Iпытался использовать broadcast receiver (как в этом ответе), но широковещательные сообщения больше не принимаются, когда приложение закрывается (после Android N).Это работает только тогда, когда приложение находится на переднем плане.

Чтобы обнаружить изменение подключения в фоновом режиме, я попытался использовать Job Scheduler (как в этот ответ) с.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY), но моя проблема в том, что работа выполняется периодически (каждые 15 минут), даже когда пользователь все еще подключен к Интернету.

Моя цель - выполнить задание один раз при восстановлении интернет-соединения, а затем остановить задание, пока пользователь не отключится и снова не подключится.Задание должно быть выполнено один раз для каждого подключения к Интернету, а затем дождаться повторного подключения (не повторяя его).

Возможно ли достичь этого с помощью Job Scheduler (или любым другим способом)?

1 Ответ

1 голос
/ 21 апреля 2019

Можно ли добиться этого с помощью Планировщика заданий?
Ответ - я не знаю, НО
Вы можете использовать WorkManager . Это часть Android Jetpack.

Есть 2 варианта.

1) OneTimeWorkRequest (то, что вам нужно).
2) PeriodicWorkRequest (выполняется периодически, минимальное время составляет 15 минут, так же, как и jobScheduler).

WorkManager выполняется только 10 секунд, как планировщик заданий.

Почему WorkManager хорош. Изображение ниже даст ответ. enter image description here

enter image description here

Документация - https://developer.android.com/topic/libraries/architecture/workmanager

...