Tengo una actividad que ejecuta una simple tarea AsyncTask. Para mantener el AsyncTask ejecutándose durante rotaciones de pantalla, estoy usando onRetaingNonConfigurationInstance() para pasar el AsyncTask a la nueva Actividad como se recomienda en una de las respuestas del hilo How to handle an AsyncTask during Screen Rotation? Luego actualizo un puntero a la Actividad en el AsyncTask para asegurarme de que aún pueda actualice el diálogo de progreso desde OnProgressUpdate().Mantener AsyncTask durante la rotación pero no en la eliminación de actividad
Mi problema es que al usar este método no puedo detectar si la Actividad solo está rotada (en este caso quiero continuar ejecutando AsyncTask) o si la Actividad está oculta por el botón de Inicio en cuyo caso me gustaría para detener el AsyncTask. Sin embargo, puedo detectar el uso del botón Atrás porque en este caso el isFinishing() de la Actividad devuelve verdadero;
¿Hay algún mecanismo que pueda usar para diferenciar la rotación del uso del botón de inicio?
Gracias por la propuesta, pero voy a esperar un poco para ver si alguien ofrece una solución más "elegante" antes de elegir esto como mi respuesta aceptada. – jmbouffard
@jmbouffard - Puede que estés analizando esto. Ya está usando onRetainingNonConfiguraitonInstance() para manejar rotaciones. Asegúrese de cancelar la AsyncTask en onDestory(). Eso debería ser todo lo que se necesita. SI el usuario presiona la tecla de inicio y el teléfono no cancela su actividad (y llama a Destroy()) la actividad de recarga la tendrá cargada y lista para el usuario. – eyespyus
No funcionaría para mí porque quiero que mi AsyncTask continúe siempre que ocurra la rotación de la pantalla y se invoque onDestroy() en cada rotación. Quiero pasar mi AsyncTask activa a la nueva actividad que se crea después de la rotación. – jmbouffard