Android Actividad (Activity)

Una actividad representa una única pantalla con interfaz de usuario, como una ventana o marco de Java. La actividad de Android es una subclase de la clase ContextThemeWrapper.

Si alguna vez has programado en C, C++ o Java, debes saber que estos programas comienzan con la función main(). De manera similar, el sistema Android inicializa su programa mediante la llamada al callback onCreate() en la actividad. Existe una secuencia de métodos de callback para iniciar una actividad, y también una secuencia de métodos para cerrarla, como se muestra en el siguiente diagrama del ciclo de vida de la actividad:

图片

La clase Activity define los siguientes callbacks. No es necesario implementar todos los métodos de callback. Pero es muy importante comprender cada uno de ellos; implementarlos garantiza que el comportamiento de tu aplicación sea el que el usuario espera.

Callback Descripción
onCreate() Este es el primer callback; se llama cuando la actividad se crea por primera vez.
onStart() Este callback se llama cuando la actividad se vuelve visible para el usuario.
onResume() Este callback se llama cuando la aplicación comienza a interactuar con el usuario.
onPause() Una actividad pausada no puede aceptar entradas del usuario ni ejecutar código. Se llama cuando la actividad actual va a ser pausada y la actividad anterior va a ser restaurada.
onStop() Se llama cuando la actividad ya no es visible.
onDestroy() Se llama antes de que la actividad sea destruida por el sistema.
onRestart() Se llama cuando la actividad se vuelve a abrir después de haber sido detenida.

Ejemplo

Este ejemplo muestra el ciclo de vida de la actividad de una aplicación Android mediante sencillos pasos. Sigue los pasos a continuación para modificar la aplicación Android que creamos en el capítulo del ejemplo Hello World.

Pasos Descripción
1 Usa el IDE Eclipse para crear una aplicación Android, nómbrala HelloWorld y colócala en el paquete com.example.helloworld. Como se presentó en el capítulo Hello World Example.
2 Modifica el archivo de actividad principal MainActivity.java de la siguiente manera. Mantén el resto sin cambios.
3 Ejecuta la aplicación para abrir el emulador de Android y verifica los resultados de la modificación de la aplicación.

A continuación se muestra el contenido modificado del archivo de actividad principal src/com.example.helloworld/MainActivity.java. Contiene cada uno de los métodos básicos del ciclo de vida. El método Log.d() se utiliza para generar información de registro (log):

package com.example.helloworld;

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

public class MainActivity extends Activity {
   String msg = "Android : ";

   /** 当活动第一次被创建时调用 */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Log.d(msg, "The onCreate() event");
   }

   /** 当活动即将可见时调用 */
   @Override
   protected void onStart() {
      super.onStart();
      Log.d(msg, "The onStart() event");
   }

   /** 当活动可见时调用 */
   @Override
   protected void onResume() {
      super.onResume();
      Log.d(msg, "The onResume() event");
   }

   /** 当其他活动获得焦点时调用 */
   @Override
   protected void onPause() {
      super.onPause();
      Log.d(msg, "The onPause() event");
   }

   /** 当活动不再可见时调用 */
   @Override
   protected void onStop() {
      super.onStop();
      Log.d(msg, "The onStop() event");
   }

   /** 当活动将被销毁时调用 */
   @Override
   public void onDestroy() {
      super.onDestroy();
      Log.d(msg, "The onDestroy() event");
   }
}

La clase de actividad carga todos los componentes de la interfaz de usuario desde el archivo XML en res/layout del proyecto. La siguiente declaración carga los componentes de la interfaz de usuario desde el archivo res/layout/activity_main.xml:

setContentView(R.layout.activity_main);

Una aplicación puede tener una o más actividades, sin ninguna limitación. Cada actividad definida para la aplicación debe declararse en AndroidManifest.xml. La actividad principal de la aplicación debe declararse en el manifiesto, y la etiqueta del filtro de intención (intent-filter) debe contener la acción MAIN y la categoría LAUNCHER. Como sigue:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.helloworld"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk
      android:minSdkVersion="8"
      android:targetSdkVersion="22" />

   <application
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name"
       android:theme="@style/AppTheme" >

       <activity
          android:name=".MainActivity"
          android:label="@string/title_activity_main" >

          <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER"/>
          </intent-filter>

       </activity>

   </application>
</manifest>

Si no se declara la acción MAIN o la categoría LAUNCHER en la actividad, el icono de la aplicación no aparecerá en la lista de aplicaciones de la pantalla principal.

Ejecutemos la aplicación "Hello World!" que acabamos de modificar. Supongamos que ya creaste el AVD durante la configuración del entorno. Para ejecutar la aplicación desde Eclipse, abre un archivo de actividad del proyecto y haz clic en Ejecutar en la barra de herramientas.图片icono. Eclipse instala la aplicación en el AVD y la inicia. Si todo va bien, se mostrará la pantalla del emulador como sigue, y podrás ver la información de registro en la ventana LogCat del IDE Eclipse:

07-19 15:00:43.405: D/Android :(866): The onCreate() event
07-19 15:00:43.405: D/Android :(866): The onStart() event
07-19 15:00:43.415: D/Android :(866): The onResume() event

Hagamos clic en el botón rojo del emulador de Android图片, esto generará los siguientes mensajes de evento en la ventana LogCat del IDE Eclipse:

<code>07-19 15:01:10.995: D/Android :(866): The onPause() event
07-19 15:01:12.705: D/Android :(866): The onStop() event
</code>

Hagamos clic nuevamente en el botón de menú del emulador de Android图片, esto generará los siguientes mensajes de evento en la ventana LogCat del IDE Eclipse:

<code>07-19 15:01:13.995: D/Android :(866): The onStart() event
07-19 15:01:14.705: D/Android :(866): The onResume() event
</code>

A continuación, hagamos clic en el botón de retroceso del emulador de Android图片, esto generará los siguientes mensajes de evento en la ventana LogCat del IDE Eclipse, completando todo el ciclo de vida de la actividad en la aplicación Android.

07-19 15:33:15.687: D/Android :(992): The onPause() event
07-19 15:33:15.525: D/Android :(992): The onStop() event
07-19 15:33:15.525: D/Android :(992): The onDestroy() event
Otras extensiones