Выполнять длительные операции при получении SMS на API <21

голоса
0

Я строй приложения, которое будет прослушивать входящие SMS-сообщения, выполнять некоторые потенциально длительные операции, и отправить обратно ответ, если соблюдены некоторые условия.

У меня есть часть прослушивания работает с помощью BroadcastReceiver, но я не знаю , как / где для выполнения потенциально длительных операций. Документация для разработчиков Android заявляет , что

После того, как OnReceive (), система может убить процесс в любой момент времени, чтобы вернуть память, и при этом, он завершает порождала нить работает в этом процессе. Чтобы избежать этого, вы должны либо вызвать goAsync () (если вы хотите немного больше времени, чтобы обработать передачу в фоновом потоке) или запланировать JobService от приемника с помощью JobScheduler, так что система знает, что процесс продолжает выполнять активный Работа.

А также:

Вызов goAsync () в методе вашего приемника OnReceive () и передавая BroadcastReceiver.PendingResult в фоновом потоке. Это держит передачу активной после возвращения из OnReceive (). Тем не менее, даже при таком подходе система ожидает от вас, чтобы закончить с вещанием очень быстро (менее чем за 10 секунд). Это позволит вам перемещать работу в другой поток, чтобы избежать сбоя вращения основного потока.

Кроме того, JobSchedulerотсутствует на API <21.

Так как же я могу добиться этого на API 16 - 20?

Задан 19/09/2018 в 13:34
источник пользователем
На других языках...                            


1 ответов

голоса
1

Просто начать Serviceв вашем BroadcastReceiverсделать затянувшуюся операцию и отправить обратно результат. Вы можете использовать IntentServiceили обычный Service.

Ответил 25/09/2018 в 10:22
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more