Realizar las operaciones de largo corriendo al recibir SMS en API <21

votos
0

Estoy construyendo una aplicación que va a escuchar los mensajes SMS entrantes, realizar algunas operaciones potencialmente larga corriendo y enviar una respuesta si se cumplen algunas condiciones.

Tengo la parte de escucha de trabajo usando una BroadcastReceiver, pero no estoy seguro de cómo / dónde realizar las operaciones potencialmente larga ejecución. La documentación Android desarrollador afirma que

Después de OnReceive (), el sistema puede matar el proceso en cualquier momento para reclamar memoria, y al hacerlo así, se termina el subproceso generado se ejecuta en el proceso. Para evitar esto, usted debe o bien llamar goAsync () (si quieres un poco más de tiempo para procesar la emisión en un subproceso en segundo plano) o programar una JobService del receptor utilizando el JobScheduler, por lo que el sistema sabe que el proceso sigue llevando a cabo activo trabajo.

Y también:

Llamando goAsync () en el método de su receptor OnReceive () y pasando la BroadcastReceiver.PendingResult a un subproceso de fondo. Esto mantiene la difusión activa después de regresar de OnReceive (). Sin embargo, incluso con este enfoque, el sistema espera a que termine con la emisión muy rápidamente (menos de 10 segundos). Sí permite que se mueva el trabajo a otro hilo para evitar deforma el hilo principal.

Además, JobSchedulerno está disponible en API <21.

Entonces, ¿cómo iba a lograr esto en la API 16 - 20 En?

Publicado el 19/09/2018 a las 13:34
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Simplemente comienza una Serviceen su BroadcastReceiverhacer la operación de larga duración y enviar de vuelta el resultado. Se podría utilizar un IntentServiceo un habitual Service.

Respondida el 25/09/2018 a las 10:22
fuente por usuario

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