Notas de estudio de Android 2.2 Ciclo de vida de la actividad


1. Objetivos de aprendizaje

  1. Comprender el diagrama del ciclo de vida de la actividad
  2. Métodos de devolución de llamada del ciclo de vida maestro
  3. Utilice la clase de registro Log para generar información

2. Aprender nuevos cursos

(1) Ciclo de vida de la actividad

1. Comprender el ciclo de vida de la actividad.

  • A medida que los usuarios navegan, salen y regresan a su aplicación, las instancias de actividad en su aplicación realizan una transición entre diferentes estados en su ciclo de vida. La clase Actividad proporciona muchas devoluciones de llamada que le permiten a la Actividad saber que un determinado estado ha cambiado: el sistema está creando, deteniendo o reanudando una Actividad, o el proceso en el que se encuentra la Actividad está siendo destruido.
  • En los métodos de devolución de llamada del ciclo de vida, puede declarar cómo se comporta la actividad cuando el usuario sale y vuelve a ingresar a la actividad. Por ejemplo, si está creando un reproductor de transmisión de video, es posible que desee pausar el video o finalizar la conexión de red cuando el usuario cambie a otra aplicación. Cuando el usuario regresa, puede volver a conectarse a la red y permitirle continuar reproduciendo el video desde la misma ubicación. En otras palabras, cada devolución de llamada le permite realizar un trabajo específico apropiado para un cambio de estado determinado. Ejecutar el trabajo correcto en el momento adecuado y manejar las transiciones adecuadamente mejorará la solidez y el rendimiento de su aplicación. Por ejemplo, una buena implementación de devolución de llamada del ciclo de vida puede ayudar a evitar que su aplicación:
    – Falle cuando el usuario responde una llamada mientras usa la aplicación o cambia a otra aplicación.
    – Consume valiosos recursos del sistema cuando el usuario no lo está utilizando activamente.
    – Pierde el progreso del usuario cuando el usuario abandona la aplicación y regresa más tarde.
    – Falla o pierde el progreso del usuario cuando la pantalla gira entre horizontal y vertical.

2. Diagrama simplificado del ciclo de vida de la actividad.

  • Para navegar entre las distintas etapas del ciclo de vida de la Actividad , la clase Actividad proporciona seis métodos de devolución de llamada principales: onCreate(), onStart(), onResume(), y . Cada uno de estos métodos de devolución de llamada se llama cuando la actividad entra en un nuevo estado.onPause()onStop()onDestroy()
    Insertar descripción de la imagen aquí
    Insertar descripción de la imagen aquí
(1) Si la actividad existe o no
  • Todo el ciclo de vida de la actividad onCreate()comienza con el método y onDestroy()termina con la llamada final al método. Los recursos globales de la Actividad onCreate()se establecen en el método y, onDestroy()finalmente, los recursos se reciclan en el método.
(2) Si la Actividad es visible o no

La Actividad es visible después de activar onStart()el método, pero es posible que no pueda interactuar con el usuario. El método se activa cuando la Actividad es completamente invisible onStop(). Cuando vuelve a ser visible, onRestart()primero se activa el método y luego onStart()el método. onStart()Los métodos y onStop()métodos se pueden llamar varias veces.

(3) Si se puede interactuar con la Actividad o no

La actividad está activa entre el método onResume() y el método onPause() y puede interactuar con el usuario en este momento.

3. Prioridad del proceso de Android

  • El ciclo de vida de una aplicación son todas las etapas del proceso en el sistema Android desde el inicio hasta la finalización, es decir, todo el proceso de Android desde el inicio hasta la parada. El final del ciclo de vida de una aplicación de Android no lo realiza el proceso de aplicación en sí, sino que depende del sistema Android. Entonces, ¿qué criterios de importancia utiliza el sistema para finalizar las aplicaciones de Android? Android divide todos los procesos en cinco categorías de mayor a menor según los componentes de la aplicación y el estado de ejecución actual de los componentes, como se muestra en la siguiente figura:
    Insertar descripción de la imagen aquí

(2) Método de devolución de llamada del ciclo de vida de la actividad

1. método de devolución de llamada onCreate()

  • Debe implementar esta devolución de llamada, que se activa cuando el sistema crea la actividad por primera vez. Una vez creada la actividad, ingresa al estado "Creado". En el método onCreate(), realizas la lógica básica de inicio de la aplicación, que solo debe ocurrir una vez en todo el ciclo de vida de la Actividad. Por ejemplo, una implementación de onCreate() podría vincular datos a una lista, asociar una actividad con un modelo de vista y crear instancias de algunas variables de alcance de clase. Este método recibe el parámetro saveInstanceState, que es un objeto Bundle que contiene el estado previamente guardado de la Actividad. Si la Actividad no existía antes, el valor del objeto Paquete es nulo.
  • Si tiene un componente que reconoce el ciclo de vida asociado con el ciclo de vida de su Actividad, el componente recibirá el evento ON_CREATE. Se llama a los métodos anotados con @OnLifecycleEvent, lo que permite que su componente consciente del ciclo de vida ejecute cualquier código de configuración requerido para el estado creado.

2. Método de devolución de llamada onStart ()

-onCreate() Después de salir, la actividad entrará en el estado "Iniciado" y será visible para el usuario. Esta devolución de llamada contiene los preparativos finales antes de que la Actividad entre en primer plano e interactúe con el usuario.

3. Método de devolución de llamada onResume()

  • El sistema llama a esta devolución de llamada antes de que la actividad comience a interactuar con el usuario. En este punto, la actividad está en la parte superior de la pila de actividades y captura todas las entradas del usuario. La mayor parte de la funcionalidad principal de la aplicación se implementa en el método onResume().
  • La devolución de llamada onResume() siempre va seguida de la devolución de llamada onPause().

4. Método de devolución de llamada onPause ()

  • Cuando una actividad pierde el foco y entra en el estado "Pausada", el sistema llama a onPause(). Por ejemplo, este estado ocurre cuando un usuario toca el botón Atrás o Aplicaciones recientes. Cuando el sistema llama a onPause() para su actividad, técnicamente significa que su actividad todavía es parcialmente visible, pero la mayoría de las veces indica que el usuario está abandonando la actividad y que la actividad pronto pasará a "detenida" o "Restaurada". " estado.
  • Si el usuario desea que la interfaz continúe actualizándose, la Actividad en el estado "Pausada" también puede continuar actualizando la interfaz. Por ejemplo, una actividad que muestre una pantalla de mapa de navegación o reproduzca un reproductor multimedia sería una actividad de este tipo. Incluso si dicha actividad pierde el foco, los usuarios aún esperan que su interfaz continúe actualizándose.
  • No debe utilizar onPause() para guardar datos de aplicaciones o usuarios, realizar llamadas de red o realizar transacciones de bases de datos. Para obtener información sobre cómo guardar datos, consulte Guardar y restaurar el estado de la actividad.
  • Después de que onPause() completa la ejecución, la siguiente devolución de llamada es onStop() o onResume(), dependiendo de lo que suceda después de que la Actividad entre en el estado "Pausada".

5. método de devolución de llamada onStop()

  • Cuando la Actividad ya no es visible para el usuario, el sistema llama a onStop(). Esto puede ocurrir porque la actividad se destruye, se inicia una nueva actividad o una actividad existente ingresa al estado "Reanudar" y sobrescribe la actividad detenida. En todos estos casos, la actividad detenida ya no será visible en absoluto.
  • La siguiente devolución de llamada del sistema será onRestart() (si la Actividad vuelve a interactuar con el usuario) o onDestroy() (si la Actividad termina por completo).

6. Método de devolución de llamada onRestart()

  • Esta devolución de llamada se llama cuando la actividad en el estado Detenido está a punto de reiniciarse. onRestart() reanuda la actividad desde el estado en el que se encontraba cuando se detuvo.
  • Esta devolución de llamada siempre va seguida de onStart().

7. Método de devolución de llamada onDestroy()

  • El sistema llama a esta devolución de llamada antes de destruir la Actividad.
  • Esta devolución de llamada es la última devolución de llamada recibida por la Actividad. Normalmente, onDestroy() se implementa para garantizar que todos los recursos de la Actividad se liberen cuando se destruye la Actividad o el proceso que la contiene.

(3) Utilice la clase Log para generar información

  • Al depurar código, si necesita ver información de depuración, debe utilizar la clase android.util.Log de Android, que tiene 5 métodos comunes. Nota: Cuando se utilizan diferentes métodos de impresión, todos llevan parámetros (etiqueta de cadena, mensaje de cadena). La etiqueta representa la etiqueta de la información impresa y el mensaje representa la información que debe imprimirse.

1. Método log.v()

  • v: detallado; el color de salida es negro y se generará cualquier mensaje. La v aquí representa detallado. El uso habitual es Log.v("","");

2. Método log.d()

  • d: depuración; el color de salida es azul. Solo se genera información de depuración, pero se genera información de la capa superior. El filtrado se puede seleccionar a través de la etiqueta Logcat de DDMS.

3. Método Log.i()

  • i: información, el color de salida es verde y se emite información general. La información de Log.v y Log.d no se generará, pero se mostrará la información de i, w y e.

4. Método log.w()

  • w: advertencia; el color de salida es naranja y se genera información de advertencia. Generalmente, debemos prestar atención a la optimización del código de Android. Al mismo tiempo, después de seleccionarlo, también se generará información de Log.e.

5. Método log.e()

  • e: error; el color de salida es rojo y solo se muestran mensajes de error rojos. Necesitamos analizar cuidadosamente para encontrar la causa del error.

(4) Demostración del caso del método de devolución de llamada

1. Crea una aplicación de Android

  • Basado en la plantilla de actividad vacía
    Insertar descripción de la imagen aquí

  • Configurar la información del proyecto
    Insertar descripción de la imagen aquí

  • Haga clic en el botón [Finalizar] para completar la inicialización del proyecto.
    Insertar descripción de la imagen aquí

2. Archivo de recursos de cadena

  • strings.xmlModificar app_namevalores de variables en el archivo y agregar nuevas variablestest_life_cycle
    Insertar descripción de la imagen aquí

3. Archivo de recursos de diseño principal

  • Cambie el diseño de restricción a diseño lineal y establezca las propiedades relacionadas del control de etiqueta
    Insertar descripción de la imagen aquí

4. Función de implementación de la clase de interfaz principal

  • MainActivityDefinir constantes de etiquetas enTAG
    Insertar descripción de la imagen aquí

  • Generar un mensaje de depuración en los métodos de devolución de llamada onCreate y onDestroy
    Insertar descripción de la imagen aquí

  • Generar un mensaje de depuración en los métodos de devolución de llamada onStart y onStop
    Insertar descripción de la imagen aquí

  • Generar un mensaje de depuración en los métodos de devolución de llamada onResume y onPause
    Insertar descripción de la imagen aquí

  • Genera un mensaje de depuración en el método de devolución de llamada onRestart (en el proceso de ser completamente invisible⟹ \Longrightarrow⟹ completamente visible)

  • Ver el código fuente de MainActivity

package net.xqf.lifecycle;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.util.Log;

public class MainActivity extends AppCompatActivity {
    
    

    private final static String TAG="life_cycle";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d(TAG,"onCreate invoked");

    }

    @Override
    protected void onStart() {
    
    
        super.onStart();
        Log.d(TAG,"onStart invoked");
    }

    @Override
    protected void onResume() {
    
    
        super.onResume();
        Log.d(TAG,"onResume invoked");
    }

    @Override
    protected void onPause() {
    
    
        super.onPause();
        Log.d(TAG,"onPause invoked");
    }



    @Override
    protected void onStop() {
    
    
        super.onStop();
        Log.d(TAG, "ononStop invoked");
    }

    @Override
    protected void onRestart() {
    
    
        super.onRestart();
        Log.d(TAG,"onRestart invoked");
    }

    @Override
    protected void onDestroy() {
    
    
        super.onDestroy();
        Log.d(TAG, "onDestroy invoked");
    }
}

5. Agregar filtro de mensajes

  • Para ver mejor la información de depuración de esta aplicación, debe agregar un filtro de mensajes. Cree el filtro de mensajes life_cycle_filter y registre la etiqueta como life_cycle
    Insertar descripción de la imagen aquí

6. Inicie la aplicación y vea los registros.

  • Inicie la aplicación y vea los mensajes en LogCat (luego cambiamos el estado de la aplicación: primer plano⟹ \Longrightarrow⟹fondo⟹ \Longrightarrow⟹ primer plano⟹ \Longrightarrow⟹ cerrado)
    Insertar descripción de la imagen aquí

  • Haga clic en el botón [Inicio] para regresar al escritorio de la aplicación móvil
    Insertar descripción de la imagen aquí

  • En este momento, la ventana de la aplicación está cubierta por el escritorio, vea el mensaje de registro
    Insertar descripción de la imagen aquí

  • Haga clic en el botón [Descripción general] para ver la lista de aplicaciones recientes
    Insertar descripción de la imagen aquí

  • La aplicación abierta más recientemente es [Ciclo de vida]
    Insertar descripción de la imagen aquí

  • Haga clic en la aplicación [Ciclo de vida] que se ejecuta en segundo plano y su ventana volverá al primer plano para ver la información del registro.
    Insertar descripción de la imagen aquí

  • Al presionar el botón [Volver] en realidad no se puede cerrar la aplicación [Ciclo de vida]
    Insertar descripción de la imagen aquí

  • Debe presionar la tecla [Descripción general], seleccionar la aplicación [Ciclo de vida] y deslizarla hacia arriba para cerrar la aplicación.
    Insertar descripción de la imagen aquí

  • A partir de la información del registro, podemos ver la arquitectura de tres niveles.

  1. Capa más externa (onCreate - onDestory) - (existe - no existe)
  2. Capa intermedia (onStart - onStop) - (visible - invisible)
  3. Capa más interna (onResume - onPause) - (interactiva - no interactiva)
  • Ver grabación de pantalla de operación
    Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41301333/article/details/127806427
Recomendado
Clasificación