WEBVTT

00:00.200 --> 00:01.210
Willkommen zurück.

00:01.220 --> 00:04.340
In diesem Video erfahren wir mehr über Livedata in Android.

00:04.340 --> 00:07.430
Livedata ist eine beobachtbare Datenträgerklasse.

00:07.430 --> 00:14.150
Im Gegensatz zu einem normalen Observable ist Livedata lebenszyklusorientiert, d. h. es berücksichtigt den Lebenszyklus anderer

00:14.150 --> 00:17.930
Anwendungskomponenten wie Aktivitäten, Fragmente oder Dienste.

00:17.930 --> 00:26.420
Dadurch wird sichergestellt, dass Live-Daten nur Beobachter von Anwendungskomponenten aktualisieren, die sich in einem aktiven Lebenszykluszustand befinden.

00:26.420 --> 00:33.890
Wenn beispielsweise der Lebenszyklusstatus gestartet oder wieder aufgenommen wird, betrachtet livedata in einen Beobachter

00:33.890 --> 00:40.880
als aktiv, und nur aktive Beobachter werden von livedata über Lebenszyklusaktualisierungen informiert.

00:40.880 --> 00:47.540
Es beseitigt Speicherlecks, die durch die zahlreichen Rückrufe verursacht werden, die die Ergebnisse an den UI-Thread senden, und stellt sicher, dass die

00:47.540 --> 00:49.940
Benutzeroberfläche immer auf dem neuesten Stand ist.

00:49.940 --> 00:56.240
Es entkoppelt die enge Integration zwischen dem Datenvermittler und der Benutzeroberfläche, um abgestürzte Aktivitäten zu vermeiden.

00:56.240 --> 01:05.040
UI-Komponenten überwachen kontinuierlich relevante Daten und Live-Daten verwalten all diese Aufgaben automatisch, wenn sich der

01:05.070 --> 01:07.800
relevante Lebenszyklusstatus ändert.

01:07.800 --> 01:15.120
Wenn die Aktivität oder das Fragment aufgrund von Konfigurationsänderungen neu erstellt wird, z. B. durch Drehen

01:15.120 --> 01:22.770
des Geräts, von Hoch- zu Querformat oder umgekehrt, erhält es sofort die neuesten Informationen von den erweiterten

01:22.770 --> 01:29.580
Live-Daten-Wraps-Systemdiensten, damit sie innerhalb der App freigegeben werden können.

01:29.580 --> 01:34.890
Starten wir in Android Studio und lernen wir, wie man Live-Daten in Android-Anwendungen verwendet.

01:34.890 --> 01:38.100
Fahren wir mit unserer Gegenanmeldung fort.

01:38.100 --> 01:39.780
Dies ist unser Ansichtsmodell.

01:39.780 --> 01:44.550
Wir haben den Zähler, wir haben die Methode "Zähler erhöhen" und die Methode "Zähler erhalten".

01:44.550 --> 01:47.100
Und in der Hauptaktivität haben wir das Layout.

01:47.100 --> 01:53.850
Ich verwende die Datenbindung, so dass Sie sehen können, Datenbindung bauen Funktionen und den Lebenszyklus, die für das Ansichtsmodell

01:53.850 --> 01:54.960
ist.

01:54.960 --> 02:04.530
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.

02:04.530 --> 02:09.780
In der Hauptaktivität habe ich die Hauptbindung der Aktivität und das Ansichtsmodell initialisiert.

02:09.780 --> 02:18.570
Das Problem ist hier, wenn ich diese Hauptbindung die Textansicht entfernen, wenn ich auf die Schaltfläche klicken, wird es die Fehler

02:18.570 --> 02:19.740
zu schließen.

02:19.740 --> 02:21.720
Lassen Sie mich die Anwendung ausführen und es Ihnen zeigen.

02:21.720 --> 02:29.520
Wenn ich auf die Schaltfläche klicke, passiert nichts, weil der Zähler zwar erhöht wird, aber der Zählerwert

02:29.520 --> 02:31.200
nicht angezeigt wird.

02:31.200 --> 02:36.660
Die Benutzeroberfläche, d. h. die Textansicht mit dem neuen Zählerwert, wird nicht aktualisiert.

02:36.660 --> 02:44.880
Um dieses Problem zu lösen, verwende ich die Live-Daten in meinem Ansichtsmodell, und anstatt diese Integer-Variable

02:44.880 --> 02:53.670
namens counter zu erstellen, erstelle ich eine ähnliche Variable mit veränderbaren Live-Daten vom Typ integer und benenne

02:53.670 --> 02:58.380
sie als counter equal to new mutable live data.

02:58.410 --> 03:05.850
Live-Daten sind eine beobachtbare Datenhalterklasse, die in Komponenten der Android-Architektur eingeführt wurde.

03:05.850 --> 03:14.520
Sie wurde entwickelt, um Datenänderungen zu speichern und zu beobachten und eignet sich daher perfekt für die Implementierung reaktiver und

03:14.520 --> 03:18.680
lebenszyklusorientierter datengesteuerter UI-Komponenten.

03:18.690 --> 03:25.710
Live-Daten aktualisieren die Benutzeroberfläche, in diesem Fall die Textansicht, automatisch, wenn sich die zugrunde

03:25.710 --> 03:34.140
liegenden Daten ändern, und stellen sicher, dass keine Probleme wie Speicherlecks auftreten, da der Lebenszyklus berücksichtigt wird.

03:34.170 --> 03:36.120
Fahren wir mit unserem Beispiel fort.

03:36.120 --> 03:41.610
Ich habe diese veränderbaren Live-Daten erstellt, und hier muss ich den Zähler erhöhen.

03:41.610 --> 03:49.920
Ich entferne also diesen Zähler plus plus und ändere oder rufe diese Zählervariable ab, die aus veränderbaren Live-Daten

03:49.920 --> 03:53.940
stammt, und ändere sie in einen int-Wert.

03:53.940 --> 04:02.460
Also aktueller Wert, den ich aus den veränderbaren Live-Daten bekomme, gleich Zählerpunkt, Wert bekommen.

04:02.460 --> 04:10.350
Und wenn ich die Maus hier unboxing von Zähler Punkt erhalten Wert unboxing, weil ich Integer-Klasse, nicht primitive

04:10.350 --> 04:18.570
Daten verwenden, so muss ich unboxing von Zähler Punkt erhalten Wert-Methode kann Null Zeiger Ausnahmen zu vermeiden

04:18.570 --> 04:20.730
produzieren.

04:20.730 --> 04:25.830
Ich werde hier diese Syntax verwenden, also bitte folgen Sie mir und passen Sie auf.

04:25.830 --> 04:33.240
Wenn dies nicht gleich null ist, wird der Wert des Zählers "count dot" ermittelt und auf null gesetzt.

04:33.240 --> 04:40.320
Also, was ich hier tue, ist diese Zeile von Code verwendet, um den aktuellen Wert aus dem Live-Daten-Objekt namens Zähler

04:40.320 --> 04:45.240
abrufen, während die Behandlung eines potenziellen Null-Wert anmutig.

04:45.240 --> 04:49.530
Counter ist ein Live-Datenobjekt vom Typ Integer.

04:49.530 --> 04:56.520
Live-Daten ist eine Datenhalterklasse, die Datenänderungen halten und beobachten kann und in diesem Fall

04:56.520 --> 04:59.820
einen Integer-Wert count dot get value hält.

04:59.940 --> 05:05.270
Wird verwendet, um den aktuellen Wert des Live-Datenzählers abzurufen.

05:05.280 --> 05:12.060
Die Methode get value gibt jedoch ein nullbares T zurück, das in diesem Fall integer ist.

05:12.060 --> 05:18.450
Wie Sie sehen können, ist dieser Parameter vom Typ t und in diesem Fall vom Typ Integer, was bedeutet, dass er

05:18.450 --> 05:25.590
null zurückgeben kann, wenn die Daten oder die Live-Daten nicht initialisiert wurden oder wenn die Daten null sind.

05:25.620 --> 05:29.000
Der Code counter dot get value ist nicht gleich null.

05:29.010 --> 05:37.080
Dies ist eine bedingte Prüfung, um festzustellen, ob der aus den Live-Daten des Zählers abgerufene Wert nicht null ist.

05:37.080 --> 05:44.010
Es handelt sich um eine Null-Sicherheitsprüfung, die sicherstellen soll, dass Sie nicht auf eine Null-Zeiger-Ausnahme stoßen,

05:44.010 --> 05:51.120
wenn die Live-Daten noch keinen Wert haben. Der bedingte Operator wird verwendet, um die beiden möglichen Fälle zu behandeln.

05:51.120 --> 06:00.340
Wenn der Zählerpunkt "get value" nicht Null ist, wird der Zählerpunkt "get value" der Variablen "current value" zugewiesen, was

06:00.340 --> 06:06.400
bedeutet, dass "current value" den in den Live-Daten gespeicherten Wert enthält.

06:06.430 --> 06:17.110
Andernfalls, wenn der Wert von count dot counter dot gleich null ist, wird dem aktuellen Wert null zugewiesen.

06:17.110 --> 06:23.230
Dies liefert einen Standardwert von Null für den Fall, dass die Live-Daten leer oder null sind.

06:23.230 --> 06:28.180
Wenn er also nicht null ist, dann weisen Sie dem Zählerpunkt den aktuellen Wert zu.

06:28.180 --> 06:29.140
Wert erhalten.

06:29.170 --> 06:32.560
Andernfalls setzen Sie ihn auf Null.

06:32.590 --> 06:35.830
Dann muss ich den Zähler um eins erhöhen.

06:35.830 --> 06:43.010
Ich verwende also die Zählerpunkt-Setzwert-Methode aktueller Wert plus ein Satz.

06:43.010 --> 06:50.170
Die Methode value wird verwendet, um den neuen Wert anzugeben, den Sie den Live-Daten zuweisen möchten, in diesem

06:50.170 --> 06:52.540
Fall den aktuellen Wert plus eins.

06:52.540 --> 06:58.690
Ich aktualisiere also die Live-Daten mit einem Wert, der um eins größer ist als der aktuelle Wert.

06:58.690 --> 07:08.650
Gehen wir zum Zähler "get", und hier ändere ich den Rückgabetyp "Integer" in "Live-Daten" vom Typ "Integer".

07:08.650 --> 07:17.470
In diesem Fall haben wir also eine Live-Datei namens Zähler eingeführt, die einen Integer-Wert enthält.
