Willkommen zurück.
In diesem Video erfahren wir mehr über Livedata in Android.
Livedata ist eine beobachtbare Datenträgerklasse.
Im Gegensatz zu einem normalen Observable ist Livedata lebenszyklusorientiert, d. h. es berücksichtigt den Lebenszyklus anderer
Anwendungskomponenten wie Aktivitäten, Fragmente oder Dienste.
Dadurch wird sichergestellt, dass Live-Daten nur Beobachter von Anwendungskomponenten aktualisieren, die sich in einem aktiven Lebenszykluszustand befinden.
Wenn beispielsweise der Lebenszyklusstatus gestartet oder wieder aufgenommen wird, betrachtet livedata in einen Beobachter
als aktiv, und nur aktive Beobachter werden von livedata über Lebenszyklusaktualisierungen informiert.
Es beseitigt Speicherlecks, die durch die zahlreichen Rückrufe verursacht werden, die die Ergebnisse an den UI-Thread senden, und stellt sicher, dass die
Benutzeroberfläche immer auf dem neuesten Stand ist.
Es entkoppelt die enge Integration zwischen dem Datenvermittler und der Benutzeroberfläche, um abgestürzte Aktivitäten zu vermeiden.
UI-Komponenten überwachen kontinuierlich relevante Daten und Live-Daten verwalten all diese Aufgaben automatisch, wenn sich der
relevante Lebenszyklusstatus ändert.
Wenn die Aktivität oder das Fragment aufgrund von Konfigurationsänderungen neu erstellt wird, z. B. durch Drehen
des Geräts, von Hoch- zu Querformat oder umgekehrt, erhält es sofort die neuesten Informationen von den erweiterten
Live-Daten-Wraps-Systemdiensten, damit sie innerhalb der App freigegeben werden können.
Starten wir in Android Studio und lernen wir, wie man Live-Daten in Android-Anwendungen verwendet.
Fahren wir mit unserer Gegenanmeldung fort.
Dies ist unser Ansichtsmodell.
Wir haben den Zähler, wir haben die Methode "Zähler erhöhen" und die Methode "Zähler erhalten".
Und in der Hauptaktivität haben wir das Layout.
Ich verwende die Datenbindung, so dass Sie sehen können, Datenbindung bauen Funktionen und den Lebenszyklus, die für das Ansichtsmodell
ist.
Dann habe ich den Text nur für den Titel erstellt und diesen Text, um den Zähler anzuzeigen und eine Schaltfläche, um den Zähler zu erhöhen.
In der Hauptaktivität habe ich die Hauptbindung der Aktivität und das Ansichtsmodell initialisiert.
Das Problem ist hier, wenn ich diese Hauptbindung die Textansicht entfernen, wenn ich auf die Schaltfläche klicken, wird es die Fehler
zu schließen.
Lassen Sie mich die Anwendung ausführen und es Ihnen zeigen.
Wenn ich auf die Schaltfläche klicke, passiert nichts, weil der Zähler zwar erhöht wird, aber der Zählerwert
nicht angezeigt wird.
Die Benutzeroberfläche, d. h. die Textansicht mit dem neuen Zählerwert, wird nicht aktualisiert.
Um dieses Problem zu lösen, verwende ich die Live-Daten in meinem Ansichtsmodell, und anstatt diese Integer-Variable
namens counter zu erstellen, erstelle ich eine ähnliche Variable mit veränderbaren Live-Daten vom Typ integer und benenne
sie als counter equal to new mutable live data.
Live-Daten sind eine beobachtbare Datenhalterklasse, die in Komponenten der Android-Architektur eingeführt wurde.
Sie wurde entwickelt, um Datenänderungen zu speichern und zu beobachten und eignet sich daher perfekt für die Implementierung reaktiver und
lebenszyklusorientierter datengesteuerter UI-Komponenten.
Live-Daten aktualisieren die Benutzeroberfläche, in diesem Fall die Textansicht, automatisch, wenn sich die zugrunde
liegenden Daten ändern, und stellen sicher, dass keine Probleme wie Speicherlecks auftreten, da der Lebenszyklus berücksichtigt wird.
Fahren wir mit unserem Beispiel fort.
Ich habe diese veränderbaren Live-Daten erstellt, und hier muss ich den Zähler erhöhen.
Ich entferne also diesen Zähler plus plus und ändere oder rufe diese Zählervariable ab, die aus veränderbaren Live-Daten
stammt, und ändere sie in einen int-Wert.
Also aktueller Wert, den ich aus den veränderbaren Live-Daten bekomme, gleich Zählerpunkt, Wert bekommen.
Und wenn ich die Maus hier unboxing von Zähler Punkt erhalten Wert unboxing, weil ich Integer-Klasse, nicht primitive
Daten verwenden, so muss ich unboxing von Zähler Punkt erhalten Wert-Methode kann Null Zeiger Ausnahmen zu vermeiden
produzieren.
Ich werde hier diese Syntax verwenden, also bitte folgen Sie mir und passen Sie auf.
Wenn dies nicht gleich null ist, wird der Wert des Zählers "count dot" ermittelt und auf null gesetzt.
Also, was ich hier tue, ist diese Zeile von Code verwendet, um den aktuellen Wert aus dem Live-Daten-Objekt namens Zähler
abrufen, während die Behandlung eines potenziellen Null-Wert anmutig.
Counter ist ein Live-Datenobjekt vom Typ Integer.
Live-Daten ist eine Datenhalterklasse, die Datenänderungen halten und beobachten kann und in diesem Fall
einen Integer-Wert count dot get value hält.
Wird verwendet, um den aktuellen Wert des Live-Datenzählers abzurufen.
Die Methode get value gibt jedoch ein nullbares T zurück, das in diesem Fall integer ist.
Wie Sie sehen können, ist dieser Parameter vom Typ t und in diesem Fall vom Typ Integer, was bedeutet, dass er
null zurückgeben kann, wenn die Daten oder die Live-Daten nicht initialisiert wurden oder wenn die Daten null sind.
Der Code counter dot get value ist nicht gleich null.
Dies ist eine bedingte Prüfung, um festzustellen, ob der aus den Live-Daten des Zählers abgerufene Wert nicht null ist.
Es handelt sich um eine Null-Sicherheitsprüfung, die sicherstellen soll, dass Sie nicht auf eine Null-Zeiger-Ausnahme stoßen,
wenn die Live-Daten noch keinen Wert haben. Der bedingte Operator wird verwendet, um die beiden möglichen Fälle zu behandeln.
Wenn der Zählerpunkt "get value" nicht Null ist, wird der Zählerpunkt "get value" der Variablen "current value" zugewiesen, was
bedeutet, dass "current value" den in den Live-Daten gespeicherten Wert enthält.
Andernfalls, wenn der Wert von count dot counter dot gleich null ist, wird dem aktuellen Wert null zugewiesen.
Dies liefert einen Standardwert von Null für den Fall, dass die Live-Daten leer oder null sind.
Wenn er also nicht null ist, dann weisen Sie dem Zählerpunkt den aktuellen Wert zu.
Wert erhalten.
Andernfalls setzen Sie ihn auf Null.
Dann muss ich den Zähler um eins erhöhen.
Ich verwende also die Zählerpunkt-Setzwert-Methode aktueller Wert plus ein Satz.
Die Methode value wird verwendet, um den neuen Wert anzugeben, den Sie den Live-Daten zuweisen möchten, in diesem
Fall den aktuellen Wert plus eins.
Ich aktualisiere also die Live-Daten mit einem Wert, der um eins größer ist als der aktuelle Wert.
Gehen wir zum Zähler "get", und hier ändere ich den Rückgabetyp "Integer" in "Live-Daten" vom Typ "Integer".
In diesem Fall haben wir also eine Live-Datei namens Zähler eingeführt, die einen Integer-Wert enthält.