Выполнять длительные операции при получении SMS на API <21 - PullRequest
0 голосов
/ 19 сентября 2018

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

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

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

А также:

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

Более того, JobScheduler недоступен в API <21. </p>

Так как бы я достигэто по API 16 - 20?

1 Ответ

0 голосов
/ 25 сентября 2018

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

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