ListenableWorker не имеет сети, когда пользователь не использует приложение - PullRequest
0 голосов
/ 13 марта 2020

У меня есть приложение, которое использует ListenableWorker для периодической c сетевой синхронизации. У меня есть радиоприемник для загрузки. Работа ставится в очередь через enqueueUniquePeriodicWork. Все это прекрасно работает, когда пользователь находится внутри моего приложения. Но как только они выходят, у Работника нет сети. WorkManager выполняет работника, но функция getNetwork возвращает ноль, и любая попытка использовать сеть не удалась.

Мне кажется, это неправильно. Если это ожидаемое поведение, я не уверен, в чем смысл этой функции. Если так, то мне нужно было бы обратиться в службу переднего плана, которую я надеялся избежать.

Я что-то упустил?

Изменить: я использую ListenableWorker, как я делаю асин c сетевых транзакций. Я также добавил в задание constraints.setRequiredNetworkType (NetworkType.CONNECTED), который, как я ожидал, будет препятствовать выполнению задания, если сети вообще не будет. Конечным результатом было выполнение задания без сети. Кроме того, getNetwork всегда возвращает значение null, независимо от того, доступна сеть или нет, поэтому это не является хорошим тестом для проверки работы сетевых транзакций. В итоге, когда пользователь не использует мое приложение, ListenableWorker не может использовать сеть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...