Einführung in Aktivitäten

Die Activity-Klasse ist ein wichtiger Bestandteil und die Art und Weise, wie Aktivitäten gestartet und zusammengestellt werden, Teil des Anwendungsmodells der Plattform ist. Anders als Programmierparadigmen welche Apps mit einer main()-Methode gestartet werden, die Android- initiiert das System Code in einer Activity-Instanz durch zum Aufrufen bestimmter Callback-Methoden für bestimmte Phasen von über ihren Lebenszyklus.

In diesem Dokument wird das Konzept der Aktivitäten vorgestellt und es werden einige eine kurze Anleitung zur Zusammenarbeit mit ihnen. Weitere Informationen zu Best Practices bei der Entwicklung Ihrer App Siehe Leitfaden zur Anwendungsarchitektur.

Das Konzept der Aktivitäten

Die mobile App unterscheidet sich dadurch von der Desktopversion, beginnen die Interaktionen der Nutzenden mit der App nicht immer an der gleichen Stelle. Stattdessen beginnt die User Journey oft nicht deterministisch. Wenn Sie beispielsweise eine E-Mail-App auf dem Startbildschirm öffnen, sehen Sie möglicherweise eine eine Liste der E-Mail-Adressen. Wenn Sie hingegen eine Social-Media-App verwenden, Ihre E-Mail-App startet, können Sie direkt zum Bildschirm der E-Mail-App beim Verfassen einer E-Mail.

Die Klasse Activity wurde entwickelt, um dieses Paradigma zu vereinfachen. Wenn eine App eine andere aufruft, ruft die aufrufende App eine Aktivität in der anderen App auf. und nicht die App als Ganzes. So dient die Aktivität als der Einstiegspunkt für die Interaktion der App mit dem Nutzer ist. Sie implementieren ein activity als abgeleitete Klasse der Activity-Klasse.

Eine Aktivität stellt das Fenster bereit, in dem die App auf der Benutzeroberfläche. Dieses Fenster füllt normalerweise den Bildschirm aus, ist aber möglicherweise kleiner als das Bildschirm und schweben über anderen Fenstern. Im Allgemeinen einen Bildschirm in einer App implementiert. Beispielsweise kann eine der Aktivitäten einer App einen Bildschirm mit Einstellungen implementieren, während in einer anderen Aktivität den Bildschirm Foto auswählen.

Die meisten Apps umfassen mehrere Bildschirme und somit mehrere Aktivitäten. In der Regel wird eine Aktivität in einer App als Hauptaktivität activity (Aktivität). Dabei handelt es sich um den ersten Bildschirm, der erscheint, wenn der Nutzer die App startet. Jede Aktivität kann dann eine weitere Aktivität starten, verschiedene Aktionen ausführen. Die Hauptaktivität in einer einfachen E-Mail App den Bildschirm mit einem E-Mail-Posteingang anzeigen. Danach werden die wichtigsten können andere Aktivitäten gestartet werden, die Bildschirme für Aufgaben wie das Schreiben von E-Mails und das Öffnen individueller E-Mails.

Obwohl Aktivitäten zusammenwirken, um in einer kohärenten User Experience App ist jede Aktivität nur lose an die anderen Aktivitäten gebunden. es gibt in der Regel nur minimale Abhängigkeiten zwischen den Aktivitäten in einer App. Tatsächlich werden oft Aktivitäten gestartet, die zu anderen Apps gehören. Beispiel: Eine Browser-App könnte die Freigabeaktivität einer Social-Media-App starten.

Um Aktivitäten in Ihrer App zu verwenden, müssen Sie Informationen über diese Aktivitäten in im Manifest der App enthalten ist und Sie die Lebenszyklen von Aktivitäten entsprechend verwalten müssen. Im weiteren Verlauf dieses Dokuments werden diese Themen behandelt.

Manifest konfigurieren

Damit Ihre App Aktivitäten verwenden kann, müssen Sie die Aktivitäten, und bestimmte Merkmale im Manifest enthalten.

Aktivitäten deklarieren

Um deine Aktivität zu deklarieren, öffne deine Manifestdatei und füge ein <Aktivität> als untergeordnetes Element von <application> -Elements. Beispiel:

<manifest ... >
  <application ... >
      <activity android:name=".ExampleActivity" />
      ...
  </application ... >
  ...
</manifest >

Das einzige erforderliche Attribut für dieses Element ist android:name gibt den Klassennamen der Aktivität an. Sie können auch Attribute hinzufügen, die Aktivitätsmerkmale wie Label, Symbol oder UI-Design definieren. Weitere Informationen zu diesen und anderen Attributen finden Sie in der <Aktivität> der Referenzdokumentation.

Hinweis : Nachdem Sie Ihre App veröffentlicht haben, sollten Sie Aktivitäten nicht ändern, Namen. Andernfalls funktionieren einige Funktionen wie App-Verknüpfungen möglicherweise nicht mehr. Weitere Informationen zu Änderungen, die du nach der Veröffentlichung vermeiden solltest, findest du unter <ph type="x-smartling-placeholder"></ph> Dinge, die nicht geändert werden können.

Intent-Filter deklarieren

Intent-Filter sind eine sehr leistungsstarke Funktion der Android-Plattform. Sie ermöglichen es Ihnen, eine Aktivität zu starten, die nicht nur auf einem explicit Anfrage, aber auch implizite Anfrage. Beispiel: Eine explizite Aufforderung kann das System auffordern, die Aktivität „E-Mail senden“ zu starten in der Gmail App“. Im Gegensatz dazu teilt eine implizite Anfrage dem um in einem beliebigen die den Job machen können.“ Wenn der Nutzer über die System-UI gefragt wird, welche App verwendet werden soll bei der Durchführung einer Aufgabe, ist das ein Intent-Filter.

Sie können diese Funktion nutzen, indem Sie ein <intent-filter> im <activity>-Element enthält. Die Definition dieses Elements <action>-Element und optional, ein <category> und/oder <data> -Elements. Diese Elemente kombinieren, um den Typ des Intents anzugeben, auf den Ihre Aktivität reagieren kann. Für Das folgende Code-Snippet zeigt, wie eine Aktivität konfiguriert wird, Textdaten sendet und Anfragen von anderen Aktivitäten empfängt, um dies zu tun:

<activity android:name=".ExampleActivity" android:icon="@drawable/app_icon">
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
</activity>

In dieser Beispiel: Die Aktion <action> -Element gibt an, dass diese Aktivität Daten sendet. <category> deklarieren da DEFAULT die Aktivität aktiviert, um Anfragen zur Einführung zu erhalten. Das Objekt <data> -Element gibt den Datentyp an, die diese Aktivität senden kann. Das folgende Code-Snippet zeigt, wie die Methode der oben beschriebenen Aktivität:

Kotlin

val sendIntent = Intent().apply {
    action = Intent.ACTION_SEND
    type = "text/plain"
    putExtra(Intent.EXTRA_TEXT, textMessage)
}
startActivity(sendIntent)

Java

// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
// Start the activity
startActivity(sendIntent);
Wenn Ihre App eigenständig sein soll und Sie keine anderen Apps aktivieren möchten nicht nutzen, können Sie weitere Intent-Filter benötigen. Aktivitäten, die Sie nicht durchführen möchten Anwendungen zur Verfügung stehen, sollten keine Intent-Filter haben. Sie können mit expliziten Intents starten. Weitere Informationen dazu, wie Ihre Aktivitäten auf Intents reagieren können, siehe Intents und Intent-Filter.

Erklärung von Berechtigungen

Sie können die Methode <ph type="x-smartling-placeholder"></ph> <activity>-Tag, das gesteuert werden soll welche Apps eine bestimmte Aktivität starten können. Mit einer übergeordneten Aktivität kann kein Aktivitäten von Kindern, es sei denn, beide Aktivitäten haben in ihrem Manifests. Wenn Sie eine <ph type="x-smartling-placeholder"></ph> <uses-permission>. -Element einer übergeordneten Aktivität muss jede untergeordnete Aktivität einen übereinstimmenden <ph type="x-smartling-placeholder"></ph> <uses-permission> -Elements.

Wenn Ihre App beispielsweise eine hypothetische App namens SocialApp verwenden möchte, Um einen Beitrag in sozialen Medien zu teilen, muss SocialApp selbst die Berechtigung die eine App, die sie aufruft, Folgendes haben muss:

<manifest>
<activity android:name="...."
   android:permission=”com.google.socialapp.permission.SHARE_POST”

/>

Damit Sie SocialApp aufrufen können, muss Ihre App die in den SocialApp-Manifest:

<manifest>
   <uses-permission android:name="com.google.socialapp.permission.SHARE_POST" />
</manifest>

Weitere Informationen zu Berechtigungen und Sicherheit im Allgemeinen finden Sie unter Sicherheit und Berechtigungen

Aktivitätslebenszyklus verwalten

Im Laufe ihrer Lebensdauer durchläuft eine Aktivität eine Reihe von Stadien. Sie verwenden eine Reihe von Callbacks, um Übergänge zwischen Zuständen zu verarbeiten. Die folgenden Abschnitte diese Callbacks vorstellen.

onCreate()

Sie müssen diesen Callback implementieren, der ausgelöst wird, wenn das System Ihre Aktivitäten. Ihre Implementierung sollte die wesentlichen Komponenten Ihre Aktivität: Ihre App sollte beispielsweise Ansichten erstellen und Daten an finden Sie hier. Am wichtigsten ist, dass Sie hier setContentView() um das Layout für die Benutzeroberfläche der Aktivität zu definieren.

Wenn onCreate() beendet ist, nächster Callback ist immer onStart().

onStart()

Wenn onCreate() beendet wird, wird die Aktivität wechselt in den Status „Gestartet“ und die Aktivität wird für den Nutzer sichtbar. Dieser Callback enthält die letzten Vorbereitungen der Aktivität für in den Vordergrund kommen und interaktiv werden.

onResume()

Das System ruft diesen Callback auf, kurz bevor mit der Aktivität interagiert wird mit den Nutzenden. An dieser Stelle steht die Aktivität am Anfang der Aktivität und erfasst alle Nutzereingaben. Die meisten Hauptfunktionen einer App in der Methode onResume() implementiert.

Immer der onPause()-Callback folgt onResume().

onPause()

Das System ruft onPause() auf, wenn die Aktivität verliert. und wechselt in den Status „Pausiert“. Dieser Status tritt beispielsweise auf, wenn auf die Schaltfläche „Zurück“ oder „Letzte“. Wenn das System einen Aufruf onPause() für deine Aktivität, bedeutet das eigentlich, dass Ihre Aktivität immer noch teilweise sichtbar ist. wenn der Nutzer die Aktivität verlässt und die Aktivität bald in den Gestoppt oder wieder aktiviert.

Eine Aktivität im Status „Pausiert“ kann die Benutzeroberfläche weiterhin aktualisieren, wenn der Nutzer erwartet eine Aktualisierung der Benutzeroberfläche. Beispiele für solche Aktivitäten sind beispielsweise die Darstellung einer Navigation. Karten- oder Mediaplayer wiedergegeben werden. Auch wenn solche Aktivitäten den Fokus verlieren, erwartet, dass die Benutzeroberfläche weiter aktualisiert wird.

Verwenden Sie nicht onPause(), um die Anwendung oder den Nutzer zu speichern Daten, Netzwerkaufrufe oder Datenbanktransaktionen. Informationen zum Speichern von Daten finden Sie unter Aktivitätsstatus speichern und wiederherstellen

Sobald onPause() die Ausführung beendet hat, ist der nächste Callback entweder onStop() oder onResume(), je nachdem, geschieht, nachdem die Aktivität in den Status „Pausiert“ gewechselt ist.

onStop()

Das System ruft onStop() auf, wenn der -Aktivität ist für den Nutzer nicht mehr sichtbar. Dies kann passieren, wenn die Aktivität zerstört wird, eine neue Aktivität oder eine bestehende Aktivität beginnt wieder aktiviert ist und die angehaltene Aktivität verdeckt. In all diesen Fällen wird die angehaltene Aktivität nicht mehr überhaupt sichtbar sind.

Der nächste Callback, den das System aufruft, ist entweder onRestart(), wenn die die Aktivität zurückkehrt, um mit den Nutzenden zu interagieren, onDestroy() wenn diese Aktivität vollständig beendet wird.

onNeustart()

Das System ruft diesen Callback auf, wenn eine Aktivität im Status Angehalten den folgenden Status aufweist: gerade neu gestartet wird. onRestart() stellt den Status der Aktivität ab dem Zeitpunkt wieder her, zu dem sie beendet wurde.

Auf diesen Callback folgt immer onStart()

onDestroy()

Das System löst diesen Callback aus, bevor eine Aktivität gelöscht wird.

Dieser Callback ist der letzte, den die Aktivität erhält. onDestroy() ist um sicherzustellen, dass alle Ressourcen einer Aktivität wenn die Aktivität oder der Prozess, der sie enthält, zerstört wird.

Dieser Abschnitt dient nur als Einführung in dieses Thema. Für eine wie der Aktivitätslebenszyklus und die zugehörigen Callbacks behandelt werden. Siehe Die Aktivität Lebenszyklus: