Tengo una aplicación que usa AsyncTasks para hacer llamadas a un servidor REST.Cuando la aplicación se pone en segundo plano durante una ejecución de AsyncTask, ¿qué debería hacer?
Imagine que durante un período de carga (esto es, AsyncTask va al servidor REST y obtiene datos a la siguiente pantalla) el usuario presiona Inicio.
Lo que se recomienda:
- Cancelar la AsyncTask (s) actual y reinicie cuando se reanuda la actividad
o
- Continuar las AsyncTasks pero evitando la startActivity comprobando si la aplicación está en segundo plano (para evitar el primer plano de la nueva actividad después de enviar la aplicación al fondo). Y onResume enviar a la siguiente actividad
peor de los casos que se debe prever:
- La aplicación va a fondo y se mató debido a la falta de memoria
- El AsyncTask falla debido a tiempo de espera o otro error RESTO
Después de que ambos, el usuario vuelve a la aplicación ...
depende de su requisito.
Si quiere preguntar cómo hacer alguna de las dos formas que ha mencionado, entonces es un caso diferente.
Por favor, diga si eso es lo que necesita. – akkilis
No, sé cómo implementarlo. Quiero saber si de todos modos los dos son más recomendados y por qué. ¿Cuáles son los problemas y ventajas de cada uno? – neteinstein
Como dije, depende de su requerimiento. 1. Se asegurará de que no se realice ninguna acción después de pausar la actividad y se asegurará de que se contrarresten algunas excepciones comunes planteadas en tales casos. 2. Requerirá un poco más de manejo en el código y mantenimiento de la variable de estado, y es más sofisticado en términos de experiencia. Pero tenga el problema de plantear excepciones o inconciencia en caso de que Android haya eliminado su actividad de la pila de actividades. En ese caso, su subproceso se cargará nuevamente a pesar de que se haya ejecutado en pasado porque la instancia anterior ha sido eliminada por Android. – akkilis