¿Se puede reanudar una actividad de Android después de finalizar ()?
Comprobación de algún código heredado He encontrado este fragmento:
@Override public void onResume() { if (!isFinishing()) { ... } super.onResume(); }
A pesar de la llamada super.onResume()
al final del método, que se desaconseja:
- Fragmentos: ¿cuál es el mejor lugar para medir vistas?
- Actividad Ciclo de vida X Botón de encendido X Pantalla de bloqueo
- ¿Por qué se llama a mi onResume dos veces?
- Los fragmentos de ViewPager no se recrean después de FragmentTransaction.replace () seguido por el botón de retroceso
- Android: Duplicación de fragmentos al utilizar el Administrador de fragmentos de soporte
Nota: La implementación de estos métodos de ciclo de vida siempre debe llamar a la implementación de superclase antes de realizar cualquier trabajo, como se muestra en los ejemplos anteriores http://developer.android.com/guide/components/activities.html
Estoy preocupado por la llamada if (!isFinishing())
, ¿tiene esto sentido? Como puedo ver el código de actividad mFinished
variable mFinished
se establece en true sólo en finish()
y finishActivity()
, puede, a través del ciclo de vida de Android, reanudar una actividad que está siendo destruida?
Gracias por adelantado.
- ¿Es onResume () llamado antes onActivityResult ()?
- Mal comportamiento de Backstack de la actividad cuando la actividad destruida
- Cómo manejar AsyncTask onPostExecute cuando se pausan para evitar IllegalStateException
- ¿Por qué se definen los métodos del ciclo de vida en la clase de actividad con el especificador de acceso protegido
- DatePickerDialog onDateSet llamado cuando se gira
- Aclaración sobre la documentación de Android
- Restauración del estado en Android cuando se utiliza el botón "arriba"
- Métodos del ciclo de vida de la actividad: onPostResume significado
La respuesta a su pregunta es "no" la actividad no se puede reanudar si se destruyó.
Aquí está una buena discusión: Comprensión de isFinishing ()
La razón de este código puede ser distinguir entre el cambio de orientación y el acabado real de la actividad. Importante anotar aquí isFinishing: true que significa que la llamada a
isFinishing()
en el onDestroy () devuelve true, es decir, que sucede cuando:El usuario pulsa el botón "volver" O el código de la actividad llama a
finish()
(isFinishing()
devuelve false cuando la actividad se está cerrando después de la rotación del teléfono para volver a iniciarse)
http://ogrelab.ikratko.com/activity-lifecycle-explained-in-details/
Finalmente, el código heredado llamaba finish()
bajo algunas circunstancias en el método onCreate()
. Pero echando un vistazo a onCreate()
javadoc :
Puede llamar a finish () desde esta función, en cuyo caso onDestroy () será llamado inmediatamente sin el resto del ciclo de vida de la actividad (onStart (), onResume (), onPause (), etc) ejecutándose.
Por lo tanto, esta llamada isFinishing()
es inútil dentro onResume()