Executar longo executar operações ao receber SMS na API <21

votos
0

Estou construindo um aplicativo que irá ouvir as mensagens SMS recebidas, realizar algumas operações potencialmente longa execução e enviar de volta uma resposta se forem cumpridas algumas condições.

Eu tenho a parte de escuta trabalhar usando um BroadcastReceiver, mas eu não tenho certeza de como / onde para executar as operações potencialmente longa execução. A documentação do desenvolvedor Android afirma que

Depois OnReceive (), o sistema pode matar o processo a qualquer momento para recuperar a memória, e ao fazer isso, ele termina o segmento gerado em execução no processo. Para evitar isso, você deverá chamar goAsync () (se você quiser um pouco mais de tempo para processar a transmissão em uma discussão de fundo) ou agendar uma JobService do receptor utilizando o JobScheduler, de modo que o sistema sabe que o processo continua a executar ativa trabalhos.

E também:

Chamando goAsync () no método do seu receptor OnReceive () e passando a BroadcastReceiver.PendingResult para uma discussão de fundo. Isso mantém a transmissão ativa depois de voltar de OnReceive (). No entanto, mesmo com esta abordagem, o sistema espera que você terminar com a transmissão muito rapidamente (menos de 10 segundos). Ele permite que você mova trabalho para outro segmento para evitar glitching o segmento principal.

Além disso, JobSchedulernão está disponível na API <21.

Então, como eu ia conseguir isso na API 16-20?

Publicado 19/09/2018 em 13:34
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Basta começar um Serviceem sua BroadcastReceiverpara fazer a operação de longa duração e enviar de volta o resultado. Você poderia usar um IntentServiceou regular Service.

Respondeu 25/09/2018 em 10:22
fonte usuário

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