So verwenden Sie Android-Aktivität

Aktivität

Eine Aktivität ist eine Anwendungskomponente, die einen Bildschirm bereitstellt, mit dem der Benutzer interagieren kann, um eine bestimmte Aufgabe auszuführen, z. B. das Wählen einer Nummer, das Aufnehmen eines Fotos, das Senden einer E-Mail oder das Anzeigen einer Karte. Jede Aktivität erhält ein Fenster, auf dem die Benutzeroberfläche gezeichnet werden kann. Fenster füllen normalerweise den Bildschirm aus, können aber auch kleiner als der Bildschirm sein und über anderen Fenstern schweben.

Eine Anwendung besteht in der Regel aus mehreren Aktivitäten, die meist lose gekoppelt sind. Typischerweise wird eine Aktivität in einer Anwendung als "Haupt"-Aktivität bezeichnet, die Aktivität, die dem Benutzer präsentiert wird, wenn die Anwendung zum ersten Mal gestartet wird. Jede Aktivität kann dann eine andere Aktivität starten, um verschiedene Aktionen auszuführen. Jedes Mal, wenn eine Aktivität beginnt, wird die vorherige Aktivität gestoppt, aber das System hält die Aktivität auf einem Stack ("Backstack"). Wenn eine neue Aktivität beginnt, wird sie an die Spitze des Stapels verschoben und nimmt den Fokus des Benutzers ein. Der Back Stack folgt dem einfachen „last in, first out“-Prinzip. Wenn der Benutzer also die aktuelle Aktivität beendet und auf die Schaltfläche „Zurück“ klickt, wird sie aus dem Stapel entfernt (und zerstört) und die vorherige Aktivität fortgesetzt.

Wenn eine Aktivität beendet wird, weil eine neue Aktivität gestartet wird, wird sie über diesen Zustandsübergang durch die Lebenszyklus-Callbacks der Aktivität benachrichtigt. Es gibt eine Reihe von Rückrufen, die eine Aktivität als Ergebnis ihrer eigenen Statusänderung erhalten kann – ob das System sie erstellt, angehalten, fortgesetzt oder zerstört hat – und jeder Rückruf bietet Ihnen die Möglichkeit, bestimmte Aufgaben auszuführen, die diesem Status entsprechen . Wenn Ihre Aktivität beispielsweise gestoppt wird, sollte sie alle großen Objekte wie Netzwerkdatenbankverbindungen freigeben. Wenn die Aktivität fortgesetzt wird, können Sie die erforderlichen Ressourcen zurückgewinnen und die unterbrochene Aktion fortsetzen. Diese Zustandsübergänge sind alle Teil des Lebenszyklus der Aktivität.

Erstellen einer Aktivität

Um eine Aktivität zu erstellen, müssen Sie eine Unterklasse von Aktivität (oder eine Unterklasse einer Unterklasse von Aktivität) erstellen. In Ihren Unterklassen müssen Sie Rückrufmethoden für Systemrückrufe implementieren, wenn die Aktivität zwischen den verschiedenen Zuständen ihres Lebenszyklus wechselt, z. B. wenn die Aktivität erstellt, gestoppt, fortgesetzt oder zerstört wird. Die beiden wichtigsten Callback-Methoden sind:

[onCreate()](https://www.cnblogs.com/tekkaman/archive/2011/06/07/2074211.html)

Sie müssen diese Methode implementieren. Das System ruft es beim Anlegen Ihrer Aktivität auf. In Ihrer Implementierung sollten Sie die grundlegenden Komponenten Ihrer Aktivität initialisieren. Noch wichtiger ist, dass Sie hier setContentView() aufrufen müssen, um die Benutzeroberfläche der Aktivität zu definieren.

[onPause()](https://www.cnblogs.com/tekkaman/archive/2011/06/07/2074211.html)

Das System ruft diese Methode auf, wenn der Benutzer Ihre Aktivität verlässt (obwohl dies nicht immer bedeutet, dass die Aktivität zerstört wird). Hier sollten Sie normalerweise alle Änderungen übernehmen, die über die Benutzersitzung hinaus bestehen (da der Benutzer möglicherweise nicht mehr zurückkommt).

Es gibt eine Reihe anderer Lebenszyklus-Callbacks, die Sie verwenden sollten, um eine reibungslose Benutzererfahrung zu bieten, und ein abgebrochener Tabellenvorgang kann dazu führen, dass Ihre Aktivität unterbrochen oder sogar zerstört wird.

1. Implementieren einer Benutzeroberfläche

Die Benutzeroberfläche einer Aktivität wird durch eine Hierarchie von Ansichten bereitgestellt – Objekte, die von der View-Klasse erben. Jede Ansicht steuert einen bestimmten rechteckigen Bereich des Aktivitätsfensters und reagiert auf Benutzerinteraktionen. Eine Ansicht kann beispielsweise eine Schaltfläche sein, die Aktionen auslöst, wenn der Benutzer sie berührt.

Android bietet eine große Anzahl vordefinierter Ansichten, mit denen Sie Ihre Layouts entwerfen und zusammenstellen können. „Widgets“ sind Ansichten, die visuelle (und interaktive) Elemente für den Bildschirm bereitstellen, wie z. B. Schaltflächen, Dateifelder, Kontrollkästchen oder einfach nur Bilder. "Layouts" ist eine von ViewGroup geerbte Ansicht, die ein spezielles Layoutmodell für ihre Unteransichten bereitstellt, z. B. Thread-Layout, Rasterlayout oder Abhängigkeitslayout. Sie können die View- und ViewGroup-Klassen (oder vorhandene Unterklassen) unterteilen, um Ihre eigenen Widgets und Objekte zu erstellen und sie auf Ihr Aktivitätslayout anzuwenden.

Die gebräuchlichste Methode besteht darin, ein Layout mithilfe einer Ansicht und einer in Ihren Anwendungsressourcen gespeicherten XML-Layoutdatei zu definieren. Auf diese Weise können Sie Ihr Benutzeroberflächendesign unabhängig vom Code pflegen, der das Verhalten der Aktivität definiert. Sie können das Layout mit setContentView() als UI festlegen, indem Sie die Ressourcen-ID des Ressourcenlayouts übergeben. Sie können jedoch auch neue Ansichten in Ihrem Aktivitätscode erstellen und eine Ansichtshierarchie erstellen, indem Sie neue Ansichten in eine ViewGroup einfügen, und dann dieses Layout verwenden, indem Sie die Stamm-ViewGroup an setContentView() übergeben.

Deklarieren der Aktivität im Manifest

Sie müssen Ihre Aktivität in der Manifestdatei deklarieren, damit das System darauf zugreifen kann. Um Ihre Aktivität zu deklarieren, öffnen Sie Ihre Manifestdatei und fügen Sie ein Element als untergeordnetes Element des Elements hinzu. Zum Beispiel:

Verwendung von Absichtsfiltern

Ein Element kann auch verschiedene Absichtsfilter spezifizieren – unter Verwendung des Elements – um zu erklären, dass andere Anwendungen es aktivieren können.

Wenn Sie mit den Android SDK-Tools eine neue Anwendung erstellen, wird automatisch eine Stub-Aktivität für Sie erstellt, die einen Absichtsfilter enthält, der angibt, dass die Aktivität auf die „Haupt“-Aktion reagiert und in die Kategorie „Launcher“ platziert werden sollte. Der Absichtsfilter sieht so aus.

-Element, das angibt, dass dies ein "Haupt"-Einstiegspunkt zu dieser Anwendung ist. -Element gibt an, dass diese Aktivität in die Liste der Systemanwendungen aufgenommen werden soll (um dem Benutzer zu ermöglichen, diese Aktivität zu starten).

Wenn Sie möchten, dass Ihre Anwendung eigenständig ist und nicht, dass andere Anwendungen ihre Aktivitäten aktivieren, benötigen Sie keine weiteren Absichtsfilter. Nur eine Aktivität sollte eine "Haupt"-Aktion und eine "Launcher"-Kategorie haben, wie im vorherigen Beispiel. Aktivitäten, auf die andere Anwendungen nicht zugreifen sollen, sollten keine Absichtsfilter haben, und Sie können sie starten, indem Sie die Absicht selbst anzeigen.

Wenn Sie jedoch möchten, dass Ihre Aktivität auf eingeschlossene Absichten aus anderen Anwendungen (und Ihren eigenen) reagiert, müssen Sie zusätzliche Absichtsfilter für diese Aktivität definieren. Für jede Art von Absicht, auf die Sie reagieren möchten, müssen Sie enthalten, Elemente enthalten, optional ein Element und/oder ein Element. Diese Elemente geben die Arten von Absichten an, auf die Ihre Aktivität reagieren kann.

Starten einer Aktivität

Sie können eine andere Aktivität mit startActivity() starten, indem Sie einen Intent übergeben, der die Aktivität beschreibt, die Sie starten möchten. Eine Absicht gibt entweder die vorbereitete Aktivität an, die Sie starten möchten, oder beschreibt die Aktion, die Sie ausführen möchten (das Betriebssystem wählt die entsprechende Aktivität für Sie aus und passt möglicherweise eine andere Anwendung an). Ein Intent kann eine kleine Datenmenge übertragen, die von der gestarteten Aktivität verwendet wird.

Wenn Sie vollständig in Ihrer Anwendung arbeiten, müssen Sie oft einfach eine unbekannte Aktivität starten. Sie können dies tun, indem Sie eine Absicht erstellen, die die Aktivität, die Sie starten möchten, explizit definiert, indem Sie den Klassennamen verwenden. Das folgende Beispiel zeigt, wie eine Aktivität eine andere Aktivität mit dem Namen SignInActivity startet:

Ihre Anwendung möchte jedoch möglicherweise einige Aktionen ausführen, z. B. das Senden einer E-Mail, einer Dateinachricht oder einer Statusaktualisierung, wobei Daten aus Ihrer Aktivität verwendet werden. In diesem Fall verfügt Ihre Anwendung möglicherweise nicht über eine eigene Aktivität zum Ausführen dieser Aktion, sodass Sie eine von einer anderen Anwendung auf dem Gerät bereitgestellte Aktivität veranlassen können, Ihre Aktion auszuführen. Hier sind Absichten wirklich wertvoll – Sie können eine Absicht erstellen, die eine Aktion beschreibt, die Sie ausführen möchten, und das System startet eine entsprechende Aktivität aus einer anderen Anwendung. Wenn es mehrere Aktivitäten gibt, die diese Absicht verarbeiten können, kann der Benutzer auswählen, welche ausgeführt werden soll. Wenn Sie beispielsweise dem Benutzer erlauben möchten, E-Mails zu senden, könnten Sie die folgende Absicht erstellen:

EXTRA_EMAIL fügt dem Intent zusätzlich ein String-Array hinzu, das E-Mail-Adressen angibt.Wenn eine E-Mail-Anwendung auf diesen Intent antwortet, liest es das Array von Strings und fügt sie in die entsprechenden Felder ein. In diesem Fall beginnt die Aktivität der E-Mail-Anwendung, und wenn der Benutzer fertig ist, wird Ihre Aktivität fortgesetzt.

Starten einer Aktivität für ein Ergebnis

Manchmal möchten Sie vielleicht ein Ergebnis von einer Aktivität erhalten, die Sie gestartet haben. Starten Sie in diesem Fall die Aktivität mit startActivityForResult() (statt mit startActivity()). Empfangen Sie dann das Ergebnis der nachfolgenden Aktivität und implementieren Sie die Callback-Funktion onActiviryResult(). Wenn die nachfolgende Aktivität abgeschlossen ist, gibt sie über eine Absicht ein Ergebnis an Ihre Funktion onActivityResult() zurück.

Vielleicht möchten Sie zum Beispiel, dass der Benutzer einen seiner Kontakte auswählt, damit Ihre Aktivität etwas mit diesem Kontakt machen kann. So erstellen Sie ein solches Intent- und Aktionsergebnis:

Dieses Beispiel zeigt die grundlegende Logik, die Sie in Ihrer Funktion onActivityResult() verwenden sollten, um ein Aktivitätsergebnis zu manipulieren. Die erste Bedingung prüft, ob die Anfrage erfolgreich war – wenn ja, dann ist der resultCode RESULT_OK – und es ist bekannt, ob die Anfrage die Antwort war – in diesem Fall stimmt der requestCode mit dem zweiten Parameter mit den Parametern startActivityForResult() überein . Dort manipuliert der Code das Ergebnis der Aktivität, indem er die in der Absicht zurückgegebenen Daten abfragt (den Datenparameter).

Was passieren wird, ist, dass eine ContentResolver-Implementierung den Inhaltsanbieter abfragt und einen Cursor zurückgibt, der das Lesen der abgefragten Daten ermöglicht.

Beenden einer Aktivität

Sie können eine Aktivität schließen, indem Sie ihre eigene Methode finish() aufrufen. Sie können auch eine separate Aktivität schließen, die Sie zuvor über finiActivity() gestartet haben.

Hinweis : In den meisten Fällen sollten Sie mit diesen Methoden keine Ergebnisse einer Aktivität anzeigen. Wie weiter unten zum Aktivitätslebenszyklus besprochen, verwaltet das Android-System den Lebenszyklus einer Aktivität für Sie, sodass Sie keine eigene Aktivität erstellen müssen. Das Aufrufen dieser Funktionen ist schädlich für die Benutzererfahrung und nur dann, wenn Sie absolut nicht möchten, dass der Benutzer zur Aktivität zurückkehrt.

Je suppose que tu aimes

Origine blog.csdn.net/Eqiqi/article/details/129735804
conseillé
Classement