Heim Java javaLernprogramm Android – Aktivität类

Android – Aktivität类

Nov 17, 2016 pm 02:26 PM
android

Stellen Sie zunächst Aktivität vor

1. Was ist Aktivität:

Aktivität ist ein Benutzeroberflächenprogramm, das Benutzern im Prinzip eine interaktive Schnittstellenfunktion bietet. Es ist die grundlegende Funktionseinheit von Android-Anwendungen. Die Aktivität selbst hat keine Schnittstelle. Die Aktivitätsklasse erstellt also ein Fenster, und Entwickler können die Benutzeroberfläche über die setContentView(View)-Schnittstelle in das von der Aktivität erstellte Fenster einfügen. Wenn die Aktivität auf das Vollbildfenster zeigt, kann dies auch auf andere Weise implementiert werden: als ein schwebendes Fenster (über die Themensammlung von windowIsFloating ) oder in andere Aktivitäten eingebettet (mithilfe von ActivityGroup). Die Aktivität ist eine separate Aktivität und wird zur Abwicklung von Benutzervorgängen verwendet. Fast alle Aktivitäten müssen sich mit Benutzern auseinandersetzen

2. Aktivitätslebenszyklus

Android – Aktivität类

public class Activity extends ApplicationContext {

protected void onCreate(Bundle savedInstanceState);
 
protected void onStart();
 
protected void onRestart();
 
protected void onResume();
 
protected void onPause();
 
protected void onStop();
 
protected void onDestroy();

}
Nach dem Login kopieren

Wie auf dem Bild zu sehen ist:

Während des normalen Starts einer Aktivität ist die Reihenfolge dieser Methodenaufrufe onCreate -> onStart -> Kompletter Lebenszyklus. Für die Unterbrechungsverarbeitung (z. B. einen eingehenden Anruf) gilt dann onPause -> onStop, und beim Fortsetzen ist onStart -> onResume; , dann ist der Interrupt onPause und onResume während der Wiederherstellung.

Wenn also auf unserem Mobiltelefon eine Anwendung ausgeführt wird, kann es zu Anrufen oder Textnachrichten kommen oder es ist möglicherweise kein Strom vorhanden. Zu diesem Zeitpunkt wird das Programm unterbrochen und die Die Grundfunktionen des Telefons werden vorrangig genutzt. Zumindest einige Funktionen (z. B. Telefonanrufe) müssen jedoch gewährleistet sein, wenn Ressourcen vorhanden sind unzureichend.

Die Rolle der Methode im System und was wir tun sollten:

onCreate: Hier eine Schnittstelle erstellen und einige Dateninitialisierungsarbeiten durchführen

onStart: Hier ändern Schritt Wird „für den Benutzer sichtbar, aber nicht interaktiv“;

onResume: Wird mit dem Benutzer interaktiv (das Aktivitätsstapelsystem verwaltet diese Aktivitäten über den Stapel, d. h. die aktuelle Aktivität befindet sich oben im Stapel). Stapel, und nach dem Ausführen den Stapel öffnen und zur vorherigen Aktivität zurückkehren);

onPause: Zu diesem Zeitpunkt ist es sichtbar, aber nicht interaktiv, und das System stoppt Animationen und andere Dinge, die die CPU verbrauchen. Aus der obigen Beschreibung wissen wir bereits, dass einige Ihrer Daten hier gespeichert werden sollten, da zu diesem Zeitpunkt die Priorität Ihres Programms herabgesetzt wird und diese möglicherweise vom System zurückgenommen werden. Die hier gespeicherten Daten sollen in onResume ausgelesen werden.

onStop: wird unsichtbar und wird von der nächsten Aktivität abgedeckt

onDestroy: Dies ist die letzte Methode, die aufgerufen wird, bevor die Aktivität beendet wird. Möglicherweise rufen andere Klassen die Finish-Methode oder das System auf Um Platz zu sparen und ihn vorübergehend zu beenden, können Sie ihn mit isFinishing() beurteilen. Wenn in einem Thread ein Fortschrittsdialog ausgeführt wird, brechen Sie ihn bitte in onDestroy ab. Andernfalls rufen Sie die Methode cancel des Dialogs auf wird eine Ausnahme auslösen.

OnPause, onstop, onDestroy, in diesen drei Zuständen kann die Aktivität vom System beendet werden.

3. Kommunikation zwischen Aktivitäten

In Android können verschiedene Aktivitätsinstanzen in einem Prozess oder in verschiedenen Prozessen ausgeführt werden. Daher benötigen wir einen speziellen Mechanismus, der uns hilft, Nachrichten zwischen Aktivitäten weiterzugeben. Android verwendet ein Intent-Objekt, um eine Nachricht darzustellen. Ein Intent-Objekt enthält nicht nur das Ziel der Nachricht, sondern auch den Inhalt der Nachricht. Dies ist wie eine E-Mail, die nicht nur die Empfängeradresse, sondern auch den spezifischen Inhalt enthalten sollte . Für ein Intent-Objekt ist die Nachricht „destination“ erforderlich, der Inhalt ist jedoch optional.

Die Absicht ist dafür verantwortlich, die Aktion des Vorgangs, die an der Aktion beteiligten Daten und die zusätzlichen Daten zu beschreiben. Android ist dafür verantwortlich, die entsprechende Komponente basierend auf der Beschreibung dieser Absicht zu finden und die Absicht an die zu übergeben aufrufende Komponente und Abschluss des Aufrufs der Komponente. Daher spielt Intent hier die Rolle eines Medienvermittlers, der insbesondere Informationen über einander anrufende Komponenten bereitstellt und eine Entkopplung zwischen Anrufer und Angerufenem herstellt.

In der Anwendung können wir Intent in zwei Formen verwenden:

Direkter Intent: Intent, der das Komponentenattribut angibt (rufen Sie setComponent(ComponentName) oder setClass(Context, Class) auf, um es anzugeben). Durch Angabe einer bestimmten Komponentenklasse wird die Anwendung benachrichtigt, die entsprechende Komponente zu starten.

Indirekte Absicht: Absicht, die das Comonent-Attribut nicht angibt. Diese Absichten müssen genügend Informationen enthalten, damit das System anhand dieser Informationen unter allen verfügbaren Komponenten die Komponente ermitteln kann, die diese Absicht erfüllt.
Für direkte Absichten muss Android nicht analysieren, da die Zielkomponente bereits klar ist.

Was Android analysieren muss, sind diese indirekten Absichten. Durch das Parsen wird die Absicht der Aktivität, dem IntentReceiver oder dem Dienst zugeordnet, der die Absicht verarbeiten kann. Der Intent-Parsing-Mechanismus sucht hauptsächlich nach allen in AndroidManifest.xml registrierten IntentFiltern und den darin definierten Intents und findet schließlich den passenden Intent.

4. Der Absichtsfilter der Aktivität

Der Absichtsfilter beschreibt, welche Art von Absichtsobjekten eine Komponente empfangen möchte, und abstrahiert sie in die Klasse android.content.IntentFilter. In der AndroidManifest.xml-Konfigurationsdatei von Android können Sie den Absichtsfilter für eine Aktivität über den Knoten angeben, um dem System mitzuteilen, auf welche Art von Absicht die Aktivität reagieren kann.

Wenn startActivity(intent) zum Starten einer anderen Aktivität verwendet wird und die Component-Eigenschaft des Intent-Objekts direkt angegeben wird, versucht der Aktivitätsmanager, die durch seine Component-Eigenschaft angegebene Aktivität zu starten. Andernfalls verwendet Android andere Eigenschaften des Intents, um aus allen im System installierten Aktivitäten die am besten passende Aktivität zu finden. Wenn keine geeignete Aktivität gefunden wird, löst das System eine Ausnahme aus. Der Matching-Prozess ist wie folgt:

Android – Aktivität类

5. Stapelverwaltung der Aktivität

Android verwendet einen Stapel für die Aktivitätsverwaltung, was bedeutet, dass es nur eine Aktivität gibt befindet sich oben auf dem Stapel. Wenn diese Aktivität zerstört wird, kann die folgende Aktivität oben auf dem Stapel schweben. Wenn eine neue Aktivität erstellt wird, wird die alte Aktivität auf den Stapel geschoben und sinkt. Aktivität ist die Präsentationsschicht von Android-Programmen. Jeder Anzeigebildschirm des Programms ist eine Aktivität. Die laufende Aktivität befindet sich oben im Stapel und befindet sich im Ausführungsstatus.

Android – Aktivität类

Wenn die Methode Activity.finish() im Programm aufgerufen wird, ist das Ergebnis das gleiche wie wenn der Benutzer die ZURÜCK-Taste drückt: Es teilt dem Activity Manager mit, dass die Aktivität Instanz kann „recycelt“ werden. Anschließend aktiviert der Aktivitätsmanager die Aktivität auf der zweiten Ebene des Stapels, verschiebt die ursprüngliche Aktivität in die zweite Ebene des Stapels und wechselt vom Status „Laufend“ in den Status „Pause“.

6. Aktivitätslademodus

Standard, SingleTop, SingleTask, SingleInstance (die ersten beiden sind eine Gruppe und die letzten beiden sind eine Gruppe), der Standardwert ist Standard

Standard: Die Absicht wird an die neue Instanz gesendet, sodass bei jedem Sprung eine neue Aktivität generiert wird.

singleTop: Es wird auch eine neue Instanz gesendet, der Unterschied zum Standard besteht jedoch darin, dass keine neue Instanz erstellt wird, wenn sich die angeforderte Aktivität genau oben im Stapel befindet (Aktivität als singleTop konfiguriert). >

singleTask: und die nachfolgende singleInstance erstellen nur eine Instanz. Wenn die Absicht eintrifft und es erforderlich ist, eine auf singleTask festgelegte Aktivität zu erstellen, prüft das System, ob bereits eine Instanz der Aktivität im Stapel vorhanden ist. Wenn ja, senden Sie die Absicht direkt dorthin.

einzelne Instanz:

Erklären wir zunächst das Konzept der Aufgabe. Eine Aufgabe kann als Stapel betrachtet werden, der in mehrere Aktivitäten eingeteilt werden kann. Wenn beispielsweise eine Anwendung gestartet wird, erstellt Android eine Aufgabe und startet dann die Eintragsaktivität der Anwendung. Nur in dieser Aufgabe können dann andere Aktivitäten auf seiner Oberfläche aufgerufen werden. Was passiert also, wenn Sie eine Aktivität auf mehrere Aufgaben verteilen? Wenn Sie beispielsweise eine Reiseführerdienstanwendung öffnen, gibt es darin eine Aktivität, die GOOGLE Maps öffnet. Wenn Sie die Home-Taste drücken, um zum Hauptmenü zurückzukehren und die GOOGLE Maps-Anwendung erneut zu starten, wird die Karte gerade angezeigt. Tatsächlich handelt es sich um dieselbe Aktivität. Tatsächlich wird hierdurch eine einzelne Instanz eingeführt. Der SingleInstance-Modus besteht darin, die Aktivität separat in einen Stapel zu legen, sodass sich nur diese Aktivität im Stapel befindet und die Absichten verschiedener Anwendungen von dieser Aktivität empfangen und angezeigt werden, wodurch eine gemeinsame Nutzung erreicht wird. Voraussetzung ist natürlich, dass diese Anwendungen nicht zerstört wurden, sodass die HOME-Taste gerade gedrückt wurde. Wenn die Eingabetaste gedrückt wird, ist sie ungültig.

7. Aktivitätssprung

Aktivitätssprung, kein Ergebnis zurückgegeben


Dies ist der einfachste Weg, zur Aktivität zu springen. Um eine andere Aktivität von einer Aktivität aus zu starten, starten Sie direkt Activity(new Intent(current Activity.this, next Activity.class)).

Aktivität springt und gibt Daten/Ergebnisse zurück


Wenn Sie Daten oder Ergebnisse zurückgeben müssen, verwenden Sie startActivityForResult (Intent intent, int requestCode). Der Wert von requestCode wird angepasst Identifizieren Sie die Zielaktivität des Sprungs. Die Sprungzielaktivität muss lediglich Daten/Ergebnisse zurückgeben. setResult(int resultCode) gibt nur Ergebnisse ohne Daten zurück, oder setResult(int resultCode, Intent data) gibt beides zurück! Die Verarbeitungsfunktion, die die zurückgegebenen Daten/Ergebnisse empfängt, ist onActivityResult(int requestCode, int resultCode, Intent data). Der requestCode ist hier der requestCode von startActivityForResult, der resultCode ist der resultCode in setResult und die zurückgegebenen Daten sind in data.

** Beachten Sie, dass Sie nach setResult Finish() aufrufen müssen, um die aktuelle Aktivität zu zerstören. Andernfalls können Sie nicht zur ursprünglichen Aktivität zurückkehren und die onActivityResult-Funktion der ursprünglichen Aktivität nicht ausführen und sehen, dass die aktuelle Aktivität dies tut nicht antworten.


Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Sep 12, 2024 pm 12:23 PM

In den letzten Tagen hat Ice Universe immer wieder Details zum Galaxy S25 Ultra enthüllt, von dem allgemein angenommen wird, dass es das nächste Flaggschiff-Smartphone von Samsung ist. Der Leaker behauptete unter anderem, Samsung plane nur ein Kamera-Upgrade

Beim Samsung Galaxy S25 Ultra sind erste Renderbilder durchgesickert und Gerüchte über Designänderungen wurden enthüllt Beim Samsung Galaxy S25 Ultra sind erste Renderbilder durchgesickert und Gerüchte über Designänderungen wurden enthüllt Sep 11, 2024 am 06:37 AM

OnLeaks hat sich nun mit Android Headlines zusammengetan, um einen ersten Blick auf das Galaxy S25 Ultra zu werfen, nur wenige Tage nach dem gescheiterten Versuch, mehr als 4.000 US-Dollar von seinen X-Followern (ehemals Twitter) zu generieren. Für den Kontext sind die unten eingebetteten Renderbilder h

IFA 2024 | Das NXTPAPER 14 von TCL wird in der Leistung nicht mit dem Galaxy Tab S10 Ultra mithalten können, in der Größe aber fast IFA 2024 | Das NXTPAPER 14 von TCL wird in der Leistung nicht mit dem Galaxy Tab S10 Ultra mithalten können, in der Größe aber fast Sep 07, 2024 am 06:35 AM

Neben der Ankündigung zweier neuer Smartphones hat TCL auch ein neues Android-Tablet namens NXTPAPER 14 angekündigt, dessen riesige Bildschirmgröße eines seiner Verkaufsargumente ist. Das NXTPAPER 14 verfügt über Version 3.0 der matten LCD-Panels der Signaturmarke von TCL

Das Vivo Y300 Pro bietet einen 6.500-mAh-Akku in einem schlanken 7,69-mm-Gehäuse Das Vivo Y300 Pro bietet einen 6.500-mAh-Akku in einem schlanken 7,69-mm-Gehäuse Sep 07, 2024 am 06:39 AM

Das Vivo Y300 Pro wurde gerade vollständig vorgestellt und ist eines der schlanksten Mittelklasse-Android-Telefone mit einem großen Akku. Genauer gesagt ist das Smartphone nur 7,69 mm dick, verfügt aber über einen 6.500 mAh starken Akku. Dies ist die gleiche Kapazität wie bei der kürzlich eingeführten Version

Das Samsung Galaxy S24 FE soll in vier Farben und zwei Speicheroptionen für weniger als erwartet auf den Markt kommen Das Samsung Galaxy S24 FE soll in vier Farben und zwei Speicheroptionen für weniger als erwartet auf den Markt kommen Sep 12, 2024 pm 09:21 PM

Samsung hat noch keine Hinweise darauf gegeben, wann es seine Smartphone-Serie Fan Edition (FE) aktualisieren wird. Derzeit ist das Galaxy S23 FE nach wie vor die jüngste Ausgabe des Unternehmens und wurde Anfang Oktober 2023 vorgestellt

Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Neuer Bericht liefert eine vernichtende Einschätzung der angeblichen Kamera-Upgrades für das Samsung Galaxy S25, Galaxy S25 Plus und Galaxy S25 Ultra Sep 12, 2024 pm 12:22 PM

In den letzten Tagen hat Ice Universe immer wieder Details zum Galaxy S25 Ultra enthüllt, von dem allgemein angenommen wird, dass es das nächste Flaggschiff-Smartphone von Samsung ist. Der Leaker behauptete unter anderem, Samsung plane nur ein Kamera-Upgrade

Xiaomi Redmi Note 14 Pro Plus erscheint als erstes Qualcomm Snapdragon 7s Gen 3 Smartphone mit Light Hunter 800 Kamera Xiaomi Redmi Note 14 Pro Plus erscheint als erstes Qualcomm Snapdragon 7s Gen 3 Smartphone mit Light Hunter 800 Kamera Sep 27, 2024 am 06:23 AM

Das Redmi Note 14 Pro Plus ist nun offiziell als direkter Nachfolger des letztjährigen Redmi Note 13 Pro Plus (aktuell 375 $ bei Amazon) erhältlich. Wie erwartet steht das Redmi Note 14 Pro Plus neben dem Redmi Note 14 und dem Redmi Note 14 Pro an der Spitze der Redmi Note 14-Serie. Li

iQOO Z9 Turbo Plus: Die Reservierungen für das möglicherweise aufgepeppte Serien-Flaggschiff beginnen iQOO Z9 Turbo Plus: Die Reservierungen für das möglicherweise aufgepeppte Serien-Flaggschiff beginnen Sep 10, 2024 am 06:45 AM

Die Schwestermarke von OnePlus, iQOO, hat einen Produktzyklus von 2023 bis 2024, der möglicherweise fast abgeschlossen ist. Dennoch hat die Marke erklärt, dass sie mit ihrer Z9-Serie noch nicht fertig sei. Seine letzte und möglicherweise hochwertigste Turbo+-Variante wurde gerade wie vorhergesagt angekündigt. T

See all articles