android - pie - Comprensión de isFinishing()
android versiones (2)
Me confundí después de leer el documento de Android sobre isFinishing()
en http://developer.android.com/reference/android/app/Activity.html
Si llamo a isFinishing()
en onPause()
, ¿cuál es el valor de isFinishing()
llamada a isFinishing()
en los siguientes 3 escenarios?
- La actividad se está matando debido a que se llamó a finish ().
- Una actividad no está en primer plano y el sistema operativo está eliminando la actividad (no la aplicación) debido a la poca memoria.
- La actividad va a fondo.
Estoy seguro de que el resultado de isFinishing()
será verdadero en el escenario 1 y será falso en el escenario 3.
¿Qué tal el escenario 2? Will isFinishing()
devuelve verdadero o falso en el escenario 2?
¿Cómo llamar a Pausa? 2 formas: la actividad pasa a segundo plano o la llamamos finish () en algún lugar. Si la actividad pasa a segundo plano, isFinishing () es falso. Si llamamos finish (), isFinishing () es verdadero. Y ahora vea el escenario 2: una actividad no está en primer plano y el sistema operativo está eliminando la actividad (no la aplicación) debido a la poca memoria. Se matará una actividad, por lo que estará en segundo plano, se pausa, por lo que no se llamará a OnPause. Por cierto, una actividad no puede ser asesinada, solo el proceso puede ser asesinado
Su actividad no es asesinada por el sistema operativo mientras está en primer plano. Eso no tendría sentido.
Sin embargo, si la actividad pasa al segundo plano porque el usuario cambió a una aplicación diferente, podría morir después de que se haya procesado onPause()
. Como tal, puede obtener isFinishing() == false
medida que el usuario cambia a una nueva aplicación, pero luego la aplicación se destruye.
Como dice el documento, guarde todos los datos persistentes en onPause()
. onDestroy()
no se garantiza que se onDestroy()
.
(No me sorprendería si Dianne interviene y me corrige aquí, por cierto).