Как совершать сетевые звонки на Android с приложением в фоновом режиме - PullRequest
0 голосов
/ 06 июня 2018

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

Однако получается,что после первого или второго вызова он ставит вызовы в очередь, не делая их.Если я открою приложения, остальные сетевые вызовы будут выполнены, и процесс продолжится.

Это нормальная проблема, учитывая, что в документации Android есть специальная страница документации, предназначенная для такого поведения:

Я прочитал и исследовал SO: Лучшее место для совершения сетевых вызовов , Как сделать сетевой вызов из фоновой службы? , но эти методы не сработали, чтобы обойти препятствие.Я могу потребовать, чтобы пользователь отключил «оптимизацию батареи», если это необходимо, но это тоже не сработало.

Я должен упомянуть, что я использую React Native для обработки жизненного цикла и запуска сетевых вызовов, чтобы онивыполняются внутри действия, которое не находится в фоновом режиме или когда телефон заблокирован.Я считаю, что должны быть способы перенести вещи в а) фоновый поток или б) в службу Android.

Я очень ценю любые отзывы, опыт или ссылки, которые помогут мне решить эту проблему.

1 Ответ

0 голосов
/ 13 июня 2018

В идеале вы хотели бы инициировать эти вызовы в настройках HeadlessJS.Чтобы обеспечить выполнение последующих вызовов, попробуйте уменьшить все ответы на один вызов API или используйте Promise.all для его разрешения.Многократные вызовы могут потерпеть неудачу из-за того, как оптимизированы батареи.

Чтобы обойти такую ​​оптимизацию батареи, вам нужно продвинуть задачу HeadlessJs в службу переднего плана (Android 7+), которую вы можете делать с собственным кодом или вызывая ее из NativeModulesсо стороны JS.

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