Код: Выделить всё
val t: TimerTask = object : TimerTask() {
override fun run() {
timeFromLastOrderLoad += 1
if (timeFromLastOrderLoad >= reloadingPeriod) {
timeFromLastOrderLoad = 0
activity?.get()?.runOnUiThread {
getStatus()
}
}
}
}
reloadOrdersTimer?.schedule(t, 0, 1000)
Поэтому каждые 15 секунд мои приложения отправляют запросы API. Если приложение работает в фоновом режиме, мне все равно нужно совершать эти вызовы каждые 15 секунд и проверять, меняется ли что-то, а затем воспроизводить музыку, например колокол.
Иногда это работает в фоновом режиме, иногда нет. Я понимаю это из-за очистки памяти на моем телефоне.
Я знаю, что это не очень хороший подход. Я знаю, что мы могли бы использовать FCM с обратной интеграцией, но на данный момент у меня есть такие предложения:
- Создайте WorkManager, который будет выполнять ту же работу в фоновом режиме с тем же подходом TimerTask или с использованием задержки приостановки (15 секунд), но все же, если Я хорошо понимаю из документации. Coroutine Workmanager будет очищаться так же, как и реальный подход.
- Когда приложение переходит в фоновый режим, создайте службу Foreground Service, которая должна долго жить дольше, чем 2 предыдущих подхода (фактический и рабочий), когда он возвращается на передний план, используется реальный подход к получению данных.
- ? Я не уверен, что у меня есть другие варианты, если я все еще не могу положиться на решения с помощью FCM.
Как решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/790 ... he-backgro
Мобильная версия