Как сделать фоновые вызовы API в Android Oreo во время смены локали? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть сценарий, в котором мне нужно уведомлять сервер при каждом изменении языка устройства.Мне нужно вызвать API (даже если приложение не запущено) и обновить текущий язык на сервере.Я реализовал это с помощью BroadCastReceiver для

  <action android:name="android.intent.action.LOCALE_CHANGED" />

. Как только трансляция сработала, я запускаю службу и вызываю API.Но, поскольку Android Oreo и выше имеет ограничения фонового выполнения, я должен запустить ForegroundService.

Здесь, во время фонового вызова API, уведомление отображается на панели уведомлений.Таким образом, пользователь все равно может перейти в настройки приложения и принудительно остановить приложение, после чего вызов API будет прерван.Но мне нужно гарантированное выполнение этого API.Есть ли способ выполнить его в фоновом режиме, кроме службы переднего плана?Это можно сделать с помощью WorkManager или Job Scheduler?Каков наилучший способ справиться с этим вариантом использования?Надеюсь, мой вопрос понятен.Заранее спасибо!

1 Ответ

0 голосов
/ 09 апреля 2019

Пользователь всегда может убить ваше приложение, поэтому это не должно быть неожиданным.Но если вам не нравится служба переднего плана, поместите эту информацию в очередь (с отметкой времени) в БД и отправьте в свой API при следующем запуске приложения.Если вы должны отправить немедленно, поставьте его в очередь, а затем отправьте немедленно.Если пользователь убивает ваше приложение в середине работы, вы все равно сможете повторно отправить его из очереди в следующий раз.WorkManager - хороший выбор:

Гарантирует выполнение задачи, даже если приложение или устройство перезагружается

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