Android-Activity
Eine Activity repräsentiert einen einzelnen Bildschirm mit einer Benutzeroberfläche, wie etwa ein Java-Fenster oder -Frame. Eine Android-Activity ist eine Unterklasse der Klasse ContextThemeWrapper.
Wenn Sie in C, C++ oder Java programmiert haben, sollten Sie wissen, dass diese Programme von der Funktion main() aus gestartet werden. Ähnlich initialisiert das Android-System sein Programm durch Aufruf des onCreate()-Callbacks in einer Activity. Es gibt eine Abfolge von Callback-Methoden zum Starten einer Activity und eine Abfolge von Methoden zum Herunterfahren einer Activity, wie im Activity-Lebenszyklusdiagramm unten dargestellt:

Die Klasse Activity definiert die folgenden Callbacks. Sie müssen nicht jede Callback-Methode implementieren. Es ist jedoch sehr wichtig, jede von ihnen zu verstehen, und ihre Implementierung kann sicherstellen, dass sich Ihre Anwendung so verhält, wie Benutzer es erwarten.
| Callback | Beschreibung |
|---|---|
| onCreate() | Dies ist der erste Callback, der aufgerufen wird, wenn die Activity zum ersten Mal erstellt wird. |
| onStart() | Dieser Callback wird aufgerufen, wenn die Activity für den Benutzer sichtbar wird. |
| onResume() | Dieser Callback wird aufgerufen, wenn die Anwendung beginnt, mit dem Benutzer zu interagieren. |
| onPause() | Eine pausierte Activity kann keine Benutzereingaben annehmen und keinen Code ausführen. Dies wird aufgerufen, wenn die aktuelle Activity gerade pausiert werden soll und die vorherige Activity gerade fortgesetzt werden soll. |
| onStop() | Wird aufgerufen, wenn die Activity nicht mehr sichtbar ist. |
| onDestroy() | Wird aufgerufen, bevor die Activity vom System zerstört wird. |
| onRestart() | Wird aufgerufen, wenn die Activity nach dem Anhalten erneut geöffnet wird. |
Beispiel
Dieses Beispiel demonstriert den Lebenszyklus einer Android-Anwendungs-Activity anhand einfacher Schritte. Befolgen Sie die folgenden Schritte, um die Android-Anwendung zu ändern, die wir im Kapitel Hello World Example erstellt haben.
| Schritt | Beschreibung |
|---|---|
| 1 | Verwenden Sie die Eclipse IDE, um eine Android-Anwendung zu erstellen, nennen Sie sie HelloWorld und legen Sie sie unter dem Paket com.example.helloworld ab. Wie im vorherigen Kapitel Hello World Example beschrieben. |
| 2 | Ändern Sie die Haupt-Activity-Datei MainActivity.java wie folgt. Lassen Sie den Rest unverändert. |
| 3 | Führen Sie die Anwendung aus, um den Android-Emulator zu öffnen, und überprüfen Sie die Ergebnisse der Anwendungsänderungen. |
Unten ist der geänderte Inhalt der Haupt-Activity-Datei src/com.example.helloworld/MainActivity.java. Sie enthält jede grundlegende Lebenszyklusmethode. Die Methode Log.d() wird verwendet, um Protokollinformationen zu generieren:
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");
}
}
Die Activity-Klasse lädt alle UI-Komponenten aus der XML-Datei im res/layout des Projekts. Die folgende Anweisung lädt UI-Komponenten aus der Datei res/layout/activity_main.xml:
setContentView(R.layout.activity_main);
Eine Anwendung kann eine oder mehrere Activities ohne Einschränkung haben. Jede für die Anwendung definierte Activity muss in AndroidManifest.xml deklariert werden. Die Haupt-Activity der Anwendung muss im Manifest deklariert werden, und das intent-filter-Tag muss die MAIN-Aktion und die LAUNCHER-Kategorie enthalten. Wie folgt:
<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>
Wenn entweder die MAIN-Aktion oder die LAUNCHER-Kategorie nicht in der Activity deklariert ist, dann wird das Anwendungssymbol nicht in der Anwendungsliste auf dem Startbildschirm angezeigt.
Lassen Sie uns die Anwendung „Hello World!“ ausführen, die wir gerade geändert haben. Angenommen, Sie haben bereits ein AVD während der Umgebungseinrichtung erstellt. Um die Anwendung aus Eclipse auszuführen, öffnen Sie eine Activity-Datei im Projekt und klicken Sie in der Symbolleiste auf Run.
Icon. Eclipse installiert die Anwendung auf dem AVD und startet sie. Wenn alles gut geht, wird der Emulatorbildschirm wie folgt angezeigt, und Sie können die Protokollinformationen im LogCat-Fenster der Eclipse IDE sehen.
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
Klicken wir auf die rote Schaltfläche im Android-Emulator.
, erzeugt es die folgenden Ereignismeldungen im LogCat-Fenster der Eclipse IDE.
<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>
Klicken wir erneut auf die Menüschaltfläche im Android-Emulator.
, erzeugt es die folgenden Ereignismeldungen im LogCat-Fenster der Eclipse IDE.
<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>
Als Nächstes klicken wir auf die Zurück-Schaltfläche im Android-Emulator.
, werden die folgenden Ereignismeldungen im LogCat-Fenster der Eclipse IDE erzeugt, wodurch der gesamte Lebenszyklus der Aktivität in der Android-Anwendung abgeschlossen wird.
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() eventAndere Erweiterungen