Archiv der Versionshinweise zu Architekturkomponenten

15. Januar 2019

WorkManager

WorkManager 1.0.0-beta02 wird veröffentlicht. Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Ein Grenzfall wurde behoben, bei dem regelmäßige Arbeit auf Geräten mit Android 6.0 (API-Ebene 23) mehr als einmal pro Intervall ausgeführt werden konnte. b/121998363
  • ConcurrentModificationException auf Geräten mit Android 5.1 (API-Level 22) oder niedriger wurde behoben. b/121345393
  • Fehler beim Ausführen von Aufgaben behoben, wenn auf Geräten mit Android 5.1 (API-Level 22) oder niedriger keine Einschränkungen erfüllt sind. b/122578012
  • Optimierte Verarbeitung der Aufgaben, um in einigen Grenzfällen schneller zu arbeiten. b/122358129
  • Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen für mehrere Instanzen von LiveData zu berücksichtigen, die WorkManager verwendet.
  • Verschoben, um die Room-Abhängigkeit 1.1.1 anstelle von 1.1.1-rc01 zu verwenden. Diese Versionen sind identisch. b/122578011

19. Dezember 2018

WorkManager

WorkManager 1.0.0-beta01 wird veröffentlicht. Diese Version enthält keine API-Änderungen; in Zukunft wird erwartet, dass WorkManager die API bis zur nächsten Version stabil bleibt, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerbehebungen.

Fehlerkorrekturen

  • Zuvor abgebrochene untergeordnete Aufgaben von erfolgreich abgeschlossenen übergeordneten Aufgaben werden nicht mehr ausgeführt. b/120811767
  • Richtig initialisierte Logging-Klassen (werden hauptsächlich während Tests angezeigt)

18. Dezember 2018

Die Navigation „1.0.0-alpha09“ wird freigegeben. Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.

Wir haben uns entschlossen, die Entwicklung des Artefakts android.arch.navigation:navigation-testing nicht fortzusetzen. Obwohl sich diese Methode für interne Tests von NavController als hilfreich erwiesen hat, empfehlen wir dringend alternative Teststrategien, z. B. das Mockieren der NavController-Instanz, um zu prüfen, ob die richtigen navigate()-Aufrufe ausgeführt werden. Dieser Ansatz wird im Single Activity Talk beim AndroidDevSummit 2018 ausführlich erläutert. Außerdem arbeiten wir an zusätzlichen Dokumentationen speziell zu Tests mit Navigation.

Neue Funktionen

  • MenuItems mit menuCategory="secondary" lösen den Backstack nicht mehr aus, wenn sie mit NavigationUI-Methoden verwendet werden. b/120104424
  • Mit AppBarConfiguration können Sie jetzt eine OnNavigateUpListener-Fallback-Instanz festlegen, die aufgerufen wird, wenn navController.navigateUp() false zurückgibt. b/79993862 b/120690961

Wichtige Änderungen

  • Wenn ein <argument> mit einem argType="reference" verwendet wird, parst Navigation nicht mehr die Referenz, sondern stellt die Rohressourcen-ID selbst bereit. b/111736515
  • onNavDestinationSelected() kehrt jetzt standardmäßig zum Startziel des Navigationsdiagramms zurück, sodass sie den setup-Methoden entsprechen. Fügen Sie menuCategory="secondary" zu MenuItem hinzu, damit der Back-Stack nicht überschritten wird. aosp/852869
  • Die fromBundle()-Methoden generierter Args-Klassen verwenden jetzt eine Nicht-Null-Bundle anstelle einer Bundle-aosp/845616, in der Nullwerte zulässig sind.

Fehlerkorrekturen

  • Argumente werden jetzt korrekt aus Deeplinks als korrekte argType und nicht immer als Strings b/110273284 geparst
  • Die Navigation exportiert jetzt die öffentlichen Ressourcen korrekt b/121059552
  • Safe Args ist jetzt mit dem Android Gradle-Plug-in 3.4 Canary 4 und höher kompatibel b/119662045

12. Dezember 2018

WorkManager

WorkManager 1.0.0-alpha13 wird veröffentlicht. Dieser Release enthält eine kleine API-Änderung, die für einige Kotlin-Nutzer hilfreich ist.

API-Änderungen

  • androidx.work.Result wurde in eine innere Klasse von ListenableWorker verschoben. Dadurch werden Refaktorierungskonflikte mit der Result-Klasse der obersten Ebene von Kotlin verhindert. Dies ist eine nicht abwärtskompatible API-Änderung. b/120564418

Wichtige API-Änderungen

  • androidx.work.Result wurde in eine innere Klasse von ListenableWorker verschoben.

6. Dezember 2018

Seitenumbruch

Die Paginierung 2.1.0-rc01 wird ohne Änderungen gegenüber 2.1.0-beta01 freigegeben.

Die Navigation „1.0.0-alpha08“ wird freigegeben. Dieser Release enthält nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige Änderungen.

Neue Funktionen

  • Wenn Ziellabels mit NavigationUI-Methoden verwendet werden, ersetzen sie jetzt automatisch {argName}-Instanzen in der android:label durch das richtige Argument b/80267266.
  • Die Navigation hängt jetzt von der Supportbibliothek 28.0.0 b/120293333 ab.

Wichtige Änderungen

  • OnNavigatedListener wurde in OnDestinationChangedListener b/118670572 umbenannt.
  • OnDestinationChangedListener übergibt jetzt auch das Bundle der Argumente aosp/837142.
  • Die Attribute app:clearTask und app:launchDocument sowie die zugehörigen Methoden wurden entfernt. Verwenden Sie app:popUpTo mit dem Stamm des Diagramms, um alle Ziele aus dem Back-Stack zu entfernen. b/119628354
  • ActivityNavigator.Extras verwendet jetzt ein Builder-Muster und bietet die Möglichkeit, beliebige Intent.FLAG_ACTIVITY_-Flags aosp/828140 festzulegen.
  • NavController.onHandleDeepLink wurde in handleDeepLink aosp/836063 umbenannt.
  • Viele Klassen und Methoden, die nicht für Unterklassen vorgesehen sind, wie NavOptions, NavInflater, NavDeepLinkBuilder und AppBarConfiguration, wurden in final aosp/835681 geändert.
  • Die verworfene Methode NavHostFragment.setGraph() wurde entfernt: aosp/835684
  • Die verworfene Methode NavigationUI.navigateUp(DrawerLayout, NavController) wurde entfernt. aosp/835684
  • Die Fragmenterstellung wurde nach FragmentNavigator verschoben. Damit ist es einfacher, die Fragmenterstellung an ein FragmentFactory zu delegieren. b/119054429
  • Im Konstruktor für NavGraphNavigator wird kein Context aosp/835340 mehr benötigt.
  • NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle. Die Funktionalität des von getNavigatorProvider() zurückgegebenen NavigatorProvider-Objekts hat sich nicht geändert. aosp/830660
  • NavDestination.navigate() wurde entfernt. Rufen Sie stattdessen navigate() im Navigator auf. aosp/830663
  • Erhebliche Refaktorierung von Navigator, wodurch OnNavigatorNavigatedListener nicht mehr benötigt wird und stattdessen navigate die aufgerufene NavDestination zurückgibt.
  • Navigator-Instanzen können keine Pop-Ereignisse mehr an die NavController senden. Sie können ein OnBackPressedCallback verwenden, um das Drücken der Zurück-Schaltfläche abzufangen und navController.popBackStack() aufzurufen. aosp/833716

Fehlerkorrekturen

  • popUpTo funktioniert jetzt konsistent, wenn das Ziel ein <navigation>-Element ist b/116831650
  • Mehrere Fehler behoben, die bei der Verwendung verschachtelter Grafiken zu einem IllegalArgumentException führten b/118713731 b/113611083 b/113346925 b/113305559
  • Das Attribut dataPattern von <activity>-Zielen füllt nun Argumente aus Nicht-String-Argumenten durch Aufrufen von toString() b/120161365 aus.

Sichere Argumente

  • Safe Args unterstützt Serializable -Objekte, einschließlich Enum-Werte. Für Enum-Typen kann ein Standardwert festgelegt werden, indem das Enum-Literal ohne Klassennamen verwendet wird (z. B. app:defaultValue="READ"). b/111316353
  • Safe Args unterstützt Arrays aller unterstützten Typen. b/111487504
  • Safe Args ignoriert jetzt Unterordner von Ressourcenverzeichnissen b/117893516.
  • Sichere Args fügt gegebenenfalls @Override-Annotationen hinzu: b/117145301

5. Dezember 2018

WorkManager

WorkManager 1.0.0-alpha12 wird veröffentlicht. Diese Version enthält einige funktionsgefährdende API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht werden. alpha12 enthält auch umfangreiche Dokumentationsaktualisierungen.

API-Änderungen

  • Mit dem neuen Artefakt work-rxjava2 wird RxWorker eingeführt. Dies ist ein ListenableWorker, der Single<Payload> erwartet.
  • Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen.
  • Payload in Result kombiniert. Result ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() erhalten. Ihre ListenableFutures ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data. Das ist eine funktionsgefährdende Änderung.
  • Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) und Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) sowie Varianten wurden hinzugefügt, um langsam auslösende Inhalts-URIs besser zu unterstützen. b/119919774
  • WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration) Variante wurde hinzugefügt. Für diese Methode ist API 26 erforderlich.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Die Klasse ContentUriTriggers und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Das ist eine funktionsgefährdende Änderung.
  • Die restlichen varargs-Methoden aus WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu. Das ist eine funktionsgefährdende Änderung.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenen combine-Methoden sind verständlicher. Das ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • Pre-Marshmallow-Implementierungen sind jetzt zuverlässiger, wenn es darum geht, den Tod von bereits laufenden Aufgaben zu bewältigen.
  • LiveData, der über observeForever beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Fehlerbehebung für die Raumbibliothek. B/74477406
  • Data.Builder.build() gibt jetzt eine Ausnahme aus, wenn das serielle Objekt seine maximale Größe überschreitet. Früher geschah dies nur bei einem Hintergrundthread, der nicht richtig verarbeitet werden konnte.
  • Es wird weiter unterschieden, ob angehaltene und abgebrochene Arbeiten gelöscht wurden. getWorkInfoById() gibt während ListenableWorker.onStopped() ein WorkInfo mit dem CANCELLED State zurück.
  • null-Results in ListenableWorker als Fehler behandeln. b/120362353
  • Spekulative Korrektur für Shield Tablets mit API 24, die manchmal ein IllegalArgumentException ausgelöst haben b/119484416

Wichtige API-Änderungen

  • Firebase JobDispatcher wird nicht mehr unterstützt, da die Funktion demnächst eingestellt wird. Das bedeutet, dass das work-firebase-Artefakt im Rahmen der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen.
  • Payload in Result kombiniert. Result ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie über Result.success() (oder Result.success(Data)), Result.failure() (oder Result.failure(Data)) und Result.retry() erhalten. Ihre ListenableFutures ergeben jetzt Result statt Payload. Workers haben keine Getter- und Setter-Methoden für die Ausgabe Data.
  • Die Kotlin-Erweiterungsmethoden Operation.await() und ListenableFuture.await() wurden hinzugefügt.
  • Operation.getException() wurde in Operation.getThrowable() umbenannt.
  • Die Klasse ContentUriTriggers und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar.
  • Die restlichen varargs-Methoden aus WorkManager, WorkContinuation und OneTimeWorkRequest wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mit Arrays.asList(...) umschließen. Wir fügen weiterhin Einzelargumente für jede Methode hinzu.
  • WorkContinuation.combine(OneTimeWorkRequest, *) Varianten wurden entfernt. Es hat eine verwirrende API präsentiert. Die vorhandenen combine-Methoden sind verständlicher.

4. Dezember 2018

Zimmer

Raum 2.1.0-alpha03 wird mit Unterstützung für Koroutinen und mehreren Fehlerkorrekturen freigegeben.

API-Änderungen

  • Der FTS-tokenizer in @Fts3/@Fts4 verwendet jetzt einen String anstelle eines Enum. Dadurch können benutzerdefinierte Tokenizer von Room verwendet werden. Integrierte Tokenizer werden in FtsOptions weiterhin als Stringkonstanten definiert. b/119234881

Neue Funktionen

  • Couroutinen: DAO-Methoden können jetzt Haltefunktionen sein. Zur Unterstützung von Sperrfunktionen in Room wurde ein neues Artefakt freigegeben: room-coroutines. b/69474692
  • DAO-Methoden, die mit @Insert, @Delete oder @Update annotiert sind, unterstützen jetzt ListenableFuture als Rückgabetyp. b/119418331

Fehlerkorrekturen

  • Ein Fehler wurde behoben, bei dem Room fälschlicherweise versucht hat, einen Konstruktor mit Spalten in der Eigenschaft ignoredColumns von @Entity zu finden. b/119830714
  • Es wurde ein Fehler behoben, bei dem DAO-Methodenparameter in der generierten Implementierung nicht als endgültig markiert wurden. b/118015483
  • Ein Fehler wurde behoben, bei dem der Prozessor von Room beim Melden eines Fehlers in einer Abfrage mit Sonderzeichen abstürzte. b/119520136
  • Ein Fehler wurde behoben, bei dem Room andere verschiedene Collection-Implementierungen als Argumente eines IN-Ausdrucks ablehnte. b/119884035
  • Ein Fehler wurde behoben, bei dem von Room zurückgegebene LiveData nach einer dauerhaften Beobachtung keine neuen Daten mehr ausgibt. b/74477406
  • Die Schließfunktion von RoomDatabase wurde aktualisiert, um Konflikte durch Sperren zu reduzieren. b/117900450

8. Nov. 2018

WorkManager

WorkManager 1.0.0-alpha11 wird veröffentlicht. Diese Version enthält viele Änderungen, die ab beta zur stabilen API werden. In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

API-Änderungen

  • Mit work-runtime-ktx wird ein neues CoroutineWorker eingeführt.
  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden Varianten der Methode getStatus wurden in die entsprechenden Varianten getWorkInfo umbenannt. Das ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStopped() akzeptiert kein boolesches Argument mehr, das angibt, ob WorkRequest abgebrochen wurde. Diese Unterscheidung wird von WorkManager nicht mehr vorgenommen. Das ist eine funktionsgefährdende Änderung.
  • Das Paket „androidx.work.test“ wurde in das Paket „androidx.work.testing“ umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück. Das ist eine funktionsgefährdende Änderung.
  • ListenableWorker.onStartWork() wurde in ListenableWorker.startWork() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API. Das ist eine funktionsgefährdende Änderung.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt. Das ist eine funktionsgefährdende Änderung.
  • Der öffentlichen API wurden viele @NonNull-Anmerkungen hinzugefügt, um die Ergonomie der API zu verbessern.
  • Fügen Sie die WorkManager.enqueueUniqueWork() API hinzu, um eindeutige OneTimeWorkRequests in die Warteschlange zu stellen, ohne eine WorkContinuation erstellen zu müssen.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück. Das ist eine funktionsgefährdende Änderung.
  • Alle Varianten von enqueue akzeptieren keine Varargs für WorkRequests mehr. Das ist eine funktionsgefährdende Änderung. Verwende stattdessen Sammlungen. Sie können Arrays.asList() verwenden, um vorhandenen Code zu ändern. Wir haben dies getan, um die API-Oberfläche und die Anzahl der Methoden zu reduzieren.
  • Wenn Sie versuchen, WorkManager mehrmals pro Vorgang zu initialize, führt dies nun zu einem IllegalStateException. Das ist eine funktionsgefährdende Änderung.

Fehlerkorrekturen

  • WorkRequest.Builder-Elemente im work-runtime-ktx-Artefakt verwenden jetzt ListenableWorker-Werte. Damit wird b/117666259 behoben.
  • Achten Sie darauf, dass die nächste Ausführungszeit für PeriodicWork in der Zukunft liegt. Damit wird b/118204399 behoben.
  • Entfernen Sie potenzielle Laufwerk-E/A-Vorgänge, wenn Sie WorkManager beim Start der App verwenden. Damit wird b/117796731 behoben.
  • Eine Race-Bedingung in WorkConstraintsTracker wurde behoben. Damit wird android-workmanager/issues/56 behoben.

Wichtige API-Änderungen

  • WorkStatus wurde in WorkInfo umbenannt. Alle entsprechenden Varianten der Methode getStatus wurden in die entsprechenden Varianten getWorkInfo umbenannt.
  • ListenableWorker.onStopped() akzeptiert kein boolesches Argument mehr, das angibt, ob WorkRequest abgebrochen wurde. Diese Unterscheidung wird von WorkManager nicht mehr vorgenommen.
  • Das Paket „androidx.work.test“ wurde in das Paket „androidx.work.testing“ umbenannt.
  • Setter für Constraints sind nicht mehr Teil der öffentlichen API.
  • WorkerParameters.getTriggeredContentUris() und WorkerParameters.getTriggeredContentAuthorities() haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück.
  • ListenableWorker.onStartWork() wurde in ListenableWorker.startWork() umbenannt.
  • Der Konstruktor für WorkStatus ist nicht mehr Teil der öffentlichen API.
  • Configuration.getMaxJobSchedulerID() und Configuration.getMinJobSchedulerID() werden in Configuration.getMinJobSchedulerId() bzw. Configuration.getMaxJobSchedulerId() umbenannt.
  • Alle Varianten der Methoden enqueue und cancel für WorkManager geben jetzt einen neuen Operation-Typ zurück.
  • Alle Varianten von enqueue akzeptieren keine Varargs für WorkRequests mehr.
  • Wenn Sie versuchen, WorkManager mehrmals pro Vorgang zu initialize, führt dies nun zu einem IllegalStateException.

1. November 2018

Seitenumbruch

Die Paginierung 2.1.0-beta01 wird ohne Änderungen gegenüber 2.1.0-alpha01 freigegeben.

30. Oktober 2018

Zimmer

Raum 2.1.0-alpha02 wurde mit mehreren Fehlerkorrekturen und einer neuen Funktion veröffentlicht.

Neue Funktionen

  • Unterstützung für Verweise auf @DatabaseView in einer @Relation wurde hinzugefügt. b/117680932

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem Room Laufwerks-E/A im Hauptthread ausführt, wenn ein Rx-Rückgabetyp abonniert und entsorgt wurde. b/117201279
  • Es wurde ein Fehler behoben, bei dem Room für ein Feld in einer Kotlin-Entitätsklasse keinen geeigneten Typkonverter fand. b/111404868
  • Es wurde ein Fehler behoben, bei dem Room für eine DAO-Schnittstellenimplementierung mit einer Kotlin-Standardmethode ohne Argumente falschen Code generiert hat. b/117527454
  • Der SQLite-Grammatikparser für Room wurde aktualisiert und ein Leistungsproblem behoben, das lange Build-Zeiten zur Folge hatte. b/117401230

29. Oktober 2018

Die Navigation 1.0.0-alpha07 wurde mit Fehlerkorrekturen und API-Änderungen veröffentlicht.

Neue Funktionen

  • Mit der neuen Klasse AppBarConfiguration können Sie anpassen, welche Ziele als Ziele der obersten Ebene betrachtet werden sollen. Weitere Informationen finden Sie in der aktualisierten Dokumentation. b/117333663
  • Sie können jetzt Argumente an das Startziel des Graphen übergeben b/110300470
  • Deeplinks unterstützen jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen. b/112806402

Wichtige Änderungen

  • Das Modul navigation-testing-ktx wurde in navigation-testing artifact eingeklappt und wird nicht mehr veröffentlicht.
  • Das Artefakt navigation-testing ist jetzt von der Kotlin-Standardbibliothek abhängig. Die API wurde geändert, um die Kotlin-Konventionen besser zu unterstützen. Sie kann jedoch weiterhin für Tests verwendet werden, die in Java geschrieben wurden.
  • Navigationsdiagramme, die im Metadatenmanifest registriert sind, werden nicht mehr unterstützt. b/118355937
  • Aktionen können nicht mehr an <activity>-Ziele angehängt werden. aosp/785539

Fehlerkorrekturen

  • Deeplinks parsen Abfrageparameter jetzt korrekt. b/110057514
  • Aktivitätsziele wenden jetzt alle Animationen zum Ein- und Beenden korrekt an. b/117145284
  • Ein Absturz wurde behoben, der nach Konfigurationsänderungen bei der Verwendung benutzerdefinierter Navigatoren auftrat. b/110763345

Sichere Argumente

  • Sichere Argumente sind jetzt fest vom Android Gradle-Plug-in 3.2.1 abhängig. b/113167627
  • Für innere Klassen können jetzt Wegbeschreibungen generiert werden. b/117407555
  • Ein Problem beim Generieren von Wegbeschreibungen in eine <include>-Grafik wurde behoben. b/116542123

12. Oktober 2018

Seitenumbruch

Die Paginierung „2.1.0-alpha01“ wurde im Wesentlichen mit zwei neuen Ergänzungen veröffentlicht: dem Löschen von Seiten und KTX-Erweiterungsbibliotheken für jedes Artefakt sowie mehreren weiteren API-Änderungen und Fehlerkorrekturen.

API-Änderungen

  • PagedList.Config.Builder.setMaxSize() zur Begrenzung der Anzahl der im Speicher geladenen Elemente wurde hinzugefügt.
  • androidx.paging.Config() wurde als Kotlin-Alternative für PagedList.Config.Builder hinzugefügt.
  • androidx.paging.PagedList() wurde als Kotlin-Alternative für PagedList.Builder hinzugefügt.
  • DataSourceFactory.toLiveData() wurde als Kotlin-Alternative für LivePagedListBuilder hinzugefügt.
  • DataSourceFactory.toObservable() und toFlowable() wurden als Kotlin-Alternativen für RxPagedListBuilder hinzugefügt.
  • AsyncPagedListDiffer.addPagedListListener() zum Anhören hinzugefügt, wenn PagedList ausgetauscht wird. b/111698609
  • PagedListAdapter.onCurrentListChanged() Variante wurde hinzugefügt, die die alte und neue Liste übergibt. Die vorherige Variante wurde eingestellt.
  • Es wurden PagedListAdapter/AsyncPagedListDiffer.submitList() Varianten hinzugefügt, die einen zusätzlichen Callback verwenden, der ausgelöst wird, wenn die Auslagerungsliste nach dem Unterschied angezeigt wird. So können Sie einen PagedList-Austausch mit anderen UI-Updates synchronisieren. b/73781068
  • PagedList.getLoadedCount() wurde hinzugefügt, um Sie darüber zu informieren, wie viele Elemente sich im Arbeitsspeicher befinden. Beachten Sie, dass der Rückgabewert immer .size() ist, wenn Platzhalter deaktiviert sind.

Fehlerkorrekturen

  • Eine Race-Bedingung bei der Wiederverwendung von Listen wurde behoben b/111591017
  • PagedList.loadAround() gibt jetzt IndexOutOfBoundsException aus, wenn der Index ungültig ist. Zuvor konnte es mit einer unklaren anderen Ausnahme abstürzen.
  • Ein Fall wurde behoben, bei dem eine extrem kleine anfängliche Ladegröße zusammen mit unveränderten Daten dazu führte, dass b/113122599 nicht mehr geladen wurde.

11. Oktober 2018

WorkManager

WorkManager 1.0.0-alpha10 wurde mit Unterstützung für vom Entwickler gesteuerte asynchrone Aufgaben veröffentlicht. In dieser Version gibt es nicht abwärtskompatible API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt Wichtige API-Änderungen.

Wir gehen davon aus, dass WorkManager die letzten Phasen der Alpha-Phase erreicht. Wir gehen davon aus, dass die Betaversion der APIs stabil sein wird. Bitte nehmen Sie sich daher etwas Zeit, um uns über unseren Issue Tracker Feedback zu geben.

API-Änderungen

  • Alle zuvor deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Worker-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung.
  • NonBlockingWorker wurde in ListenableWorker umbenannt, der jetzt ein eingeblendeter öffentlicher Kurs ist und verwendet werden kann.
    • ListenableWorker bietet Zugriff auf die abstrakte Methode ListenableFuture<Payload> onStartWork(), die im Hauptthread aufgerufen wird. Es liegt an Ihnen, die Arbeit asynchron zu starten und zu verarbeiten. Wenn Sie fertig sind, sollten Sie die ListenableFuture entsprechend aktualisieren. Referenzimplementierungen von ListenableFutures werden im Futures-Paket in alpha02 bereitgestellt (siehe unten im Abschnitt WorkManager).
    • Worker erweitert ListenableWorker und funktioniert weiterhin wie zuvor mit der abstrakten Result doWork()-Methode.
    • Einige Methoden und Mitglieder wurden von Worker in ListenableWorker zufällig angeordnet.
    • Wir werden bald Referenzimplementierungen für ListenableWorkers bereitstellen, die Kotlin-Koroutinen (nach Veröffentlichung der stabilen Versionen) und RxJava2 verwenden.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden zu einer abstrakten Klasse namens WorkerFactory zusammengeführt. Die Implementierung sorgt dafür, dass das reflexionsbasierte Standardverhalten als letzte Maßnahme für alle von Nutzern erstellten WorkerFactory-Instanzen aufgerufen wird. Das ist eine funktionsgefährdende Änderung.
  • WorkManager.synchronous() und WorkContinuation.synchronous() sowie alle zugehörigen Methoden wurden entfernt. ListenableFuture<Void> wurde in der API als Rückgabetyp vieler Methoden hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.
    • Sie können jetzt mithilfe von ListenableFutures synchron abrufen und beobachten. Beispielsweise wird mit WorkManager.enqueue() früher void zurückgegeben; jetzt wird ein ListenableFuture<Void> zurückgegeben. Sie können ListenableFuture.addListener(Runnable, Executor) oder ListenableFuture.get() aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist.
    • Beachten Sie, dass diese ListenableFuture-Werte nicht Aufschluss darüber geben, ob der Vorgang erfolgreich war oder fehlgeschlagen ist, sondern nur, dass sie abgeschlossen wurden. Sie müssen weiterhin WorkManager-Methoden verketten, um diese Informationen zu erhalten.
    • cancel()-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer nachvollziehbar sind. Möchten Sie den Vorgang oder die daraus resultierende Arbeit abbrechen? Dies ist Bestandteil des Vertrags von Future.
    • Um die Gleichheit mit den synchronen getStatus*-Methoden zu wahren, haben wir ListenableFuture Varianten bereitgestellt und die vorhandenen Varianten, die LiveData zurückgegeben haben, so umbenannt, dass sie explizit „LiveData“ als Teil des Namens enthalten (z. B. getStatusesByIdLiveData(UUID)). Diese Änderung der API wird nicht unterstützt.

Fehlerkorrekturen

  • Das bekannte Problem aus alpha09 mit doppelten androidx-annotations.pro-Dateien wurde behoben. Sie können die Problemumgehung aus den vorherigen Versionshinweisen entfernen, indem Sie exclude 'META-INF/proguard/androidx-annotations.pro' aus Ihrer Gradle-Datei löschen.
  • Proguard-Konfigurationen hinzugefügt, um den neuen Worker-Konstruktor beizubehalten. b/116296569
  • Potenzielle NullPointerException in einer Race-Bedingung korrigieren, in der die Arbeit REPLACEd war. b/116253486 und b/116677275
  • WorkContinuation.combine() akzeptiert jetzt eine oder mehrere WorkContinuations statt zwei oder mehr. b/117266752

Wichtige API-Änderungen

  • Alle zuvor deprecated-Methoden und -Klassen wurden entfernt, insbesondere der Worker-Standardkonstruktor.
  • Die Schnittstelle WorkerFactory und die konkrete Implementierung DefaultWorkerFactory wurden zu einer abstrakten Klasse namens WorkerFactory zusammengeführt.
  • WorkManager.synchronous() und WorkContinuation.synchronous() wurden entfernt.
  • WorkManager.getStatus*()-Methoden geben jetzt ListenableFutures zurück. WorkManager.getStatus*LiveData() geben LiveDatas zurück.

Futures

Die Futures „1.0.0-alpha02“ werden veröffentlicht.

API-Änderungen

  • Entwickler können jetzt ResolvableFuture und AbstractResolvableFuture als einfache konkrete Implementierungen von ListenableFuture verwenden.

8. Oktober 2018

Zimmer

Raum 2.1.0-alpha01 wird freigegeben.

Neue Funktionen

  • FTS: Raum unterstützt jetzt Entitäten mit einer Zuordnungstabelle für FTS3 oder FTS4. Mit @Entity annotierte Klassen können jetzt zusätzlich mit @Fts3 oder @Fts4 annotiert werden, um eine Klasse mit einer Zuordnungstabelle zur Volltextsuche zu deklarieren. FTS-Optionen zur weiteren Anpassung sind über die Methoden der Annotation verfügbar. b/62356416
  • Ansichten: Room unterstützt jetzt die Deklaration einer Klasse als gespeicherte Abfrage, auch als Ansicht bezeichnet, mithilfe der @DatabaseView-Annotation. b/67033276
  • Auto Value: Room unterstützt jetzt die Deklaration von AutoValue-Anmerkungsklassen als Entitäten und POJOs. Die Raumanmerkungen @PrimaryKey, @ColumnInfo, @Embedded und @Relation können jetzt in den abstrakten Methoden einer Klasse mit automatischem Wert-Anmerkungen deklariert werden. Hinweis: Damit Room sie richtig verstehen kann, muss der Vermerk auch in Verbindung mit @CopyAnnotations angegeben werden. b/62408420
  • Zusätzliche Unterstützung für Rx-Rückgabetypen: DAO-Methoden, die mit @Insert, @Delete oder @Update gekennzeichnet sind, unterstützen jetzt die Rx-Rückgabetypen Completable, Single<T> und Maybe<T>. b/63317956
  • Unveränderliche Typen mit @Relation: Bisher mussten @Relation-annotierte Felder für Räume festgelegt werden, jetzt können sie aber Konstruktorparameter sein.
  • enableMultiInstanceInvalidation: ist eine neue API in RoomDatabase.Builder, die die Entwertung über mehrere Instanzen von RoomDatabase hinweg mit derselben Datenbankdatei ermöglicht. Dieser Mechanismus zur Entwertung von mehreren Instanzen funktioniert auch für mehrere Prozesse. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Ist eine neue API in RoomDatabase.Builder, die die Datenbank bei einem Downgrade automatisch neu erstellt. b/110416954
  • ignoredColumns: ist eine neue API in der Annotation @Entity, mit der ignorierte Felder nach Name aufgelistet werden können. Nützlich, um übernommene Felder in einer Entität zu ignorieren. b/63522075

Änderungen bei APIs und des Verhaltens

  • mCallback und mDatabase in RoomDatabase sind jetzt @Deprecated und werden in der nächsten Hauptversion von Room entfernt. b/76109329

Fehlerkorrekturen

  • Es wurden zwei Probleme behoben, bei denen Room aus einer beschädigten Datenbank oder einer fehlerhaften Migration während der Initialisierung nicht ordnungsgemäß wiederhergestellt wurde. b/111504749 und b/111519144
  • Room verwendet jetzt den primären Konstruktor von Kotlin korrekt in Datenklassen, sodass die Felder nicht als vars deklariert werden müssen. b/105769985

1. Oktober 2018

Raum 2.0.0 wird ohne Änderungen im Vergleich zu 2.0.0-rc01 freigegeben. Die Paginierung 2.0.0 wurde mit einem einzelnen Fehler behoben.

Seitenumbruch

Fehlerkorrekturen

  • Ein Absturz wurde behoben, der bei sehr schnellem Scrollen mit PositionalDataSource und Platzhaltern b/114635383 auftreten konnte.

21. September 2018

Lebenszyklus 2.0.0 wurde mit einer Fehlerkorrektur von 2.0.0-rc01 in ViewModel freigegeben.

Lebenszyklus

Fehlerkorrekturen

  • Problem mit einer ViewModel-Proguard-Regel behoben, durch die Konstruktoren b/112230489 fälschlicherweise entfernt wurden

20. September 2018

Die Navigation 1.0.0-alpha06 wurde mit Fehlerkorrekturen und API-Änderungen veröffentlicht.

Neue Funktionen

API-Änderungen

  • Nicht funktionsgefährdende Änderung: Die navigate()-Methode des Navigators verwendet jetzt einen Navigator.Extras-Parameter.
  • Die Methode getGraph() von NavController ist jetzt NonNull b/112243286

Fehlerkorrekturen

  • NavigationUI.setupWithNavController() gibt keine Aufrufe mehr ab, wenn sie mit Aufrufen von einzelnen Zielen verwendet wird b/111961977
  • Navigator onSaveState() wird jetzt nur einmal aufgerufen b/112627079

Sichere Argumente

  • Die Directions-Klassen für Navigationsziele erweitern jetzt die Directions-Klasse der übergeordneten Klasse, wenn diese vorhanden ist b/79871405.
  • Die Directions- und Args-Klassen verfügen jetzt über eine nützliche toString()-Implementierung b/111843389.

19. September 2018

WorkManager

WorkManager 1.0.0-alpha09 wurde mit Fehlerkorrekturen, Infrastrukturupdates und API-Änderungen veröffentlicht.

Bekanntes Problem

Wenn das folgende Problem auftritt: „Mehr als eine Datei mit dem Betriebssystemunabhängigen Pfad ‚META-INF/proguard/androidx-annotations.pro‘ wurde gefunden“, füge deiner Gradle-Datei Folgendes als vorübergehende Problemumgehung hinzu, während wir das Problem in alpha10 beheben:

Groovig

android {
    packagingOptions {
        exclude 'META-INF/proguard/androidx-annotations.pro'
    }
}

Kotlin

android {
    packagingOptions {
        exclude("META-INF/proguard/androidx-annotations.pro")
    }
}

Fehlerkorrekturen

  • Eine weitere Korrektur, die für den Fehler „100 Jobs“ erforderlich war, wurde hinzugefügt. b/115560696
  • Einige Fehlerkorrekturen für Fremdschlüsseleinschränkungsfehler aufgrund von Race-Bedingungen. b/114705286
  • ConstraintTrackingWorker.onStopped(boolean)-Aufrufe an die zugrunde liegende Worker delegieren. b/114125093
  • Korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher erzwingen. b/113304626
  • Verbesserte Threading-Garantien sind bibliotheksintern.
  • Potenzielles Problem mit der internen Deduplizierung von LiveData beheben.

API-Änderungen

  • Sie können jetzt Ihre eigenen Worker-Instanzen zur Laufzeit erstellen. Geben Sie dazu einen WorkerFactory als Teil von WorkManager.Configuration an. Die Fallback-Factory ist DefaultWorkerFactory, was dem Verhalten vorheriger Versionen von WorkManager entspricht.
    • Die Standardkonstruktoren für Worker und NonBlockingWorker sind jetzt als verworfen markiert. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)) und rufen Sie super(Context, WorkerParameters) auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
  • Wir haben damit begonnen, das neue ListenableFuture-Artefakt intern zu verwenden (keine Guava-Abhängigkeiten). In zukünftigen Releases werden wir die API „ListenableFutures“ vorstellen. Durch diese Änderung kann NonBlockingWorker auch wieder eingeblendet werden.
  • Möglichkeit zum Auslösen von geplanten Aufgaben in TestDriver über TestDriver.setInitialDelayMet(UUID) und TestDriver.setPeriodDelayMet(UUID) hinzugefügt. b/113360060

Wichtige Änderungen

  • Die Standardkonstruktoren Worker und NonBlockingWorker wurden eingestellt. Migrieren Sie so bald wie möglich zum neuen Konstruktor. In zukünftigen Versionen wird der Standardkonstruktor entfernt.

27. August 2018

WorkManager

Der WorkManager 1.0.0-alpha08 wurde mit Fehlerkorrekturen veröffentlicht.

Fehlerkorrekturen

  • WorkManager-Komponenten wurden ausdrücklich als nicht erkannt für direkten Start gekennzeichnet, damit sie während des direkten Starts nicht gestartet werden. Zukünftig wird es eine Version von WorkManager geben, die direkt auf den Bootmodus zugreift. b/112665532
  • Ein Problem wurde behoben, bei dem wiederholte Arbeitsschritte nicht ausgeführt wurden. b/112604021
  • Regelmäßige Arbeit wurde behoben, die nicht wiederholt ausgeführt wurde (aufgrund des oben genannten Problems). b/112859683
  • Backoff-Richtlinien werden berücksichtigt, wenn der Anwendungsprozess bereits läuft.
  • Ausnahmemeldungen in Data wurden korrigiert, um anzugeben, dass das Limit bei 10 KB liegt.
  • Der Höchstwert von Configuration.setMaxSchedulerLimit(int) wurde auf 50 gesenkt, um eine gewisse Latenz beim Abschluss der Verarbeitung in JobScheduler zu berücksichtigen. b/112817355

16. August 2018

WorkManager

Der WorkManager 1.0.0-alpha07 wurde mit Fehlerkorrekturen und geringfügigen API-Änderungen veröffentlicht.

Fehlerkorrekturen

  • Eine potenzielle SQL-Abfrage mit negativen Grenzen, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte, wurde behoben.
  • Bei abgeschlossenen Arbeiten werden jetzt alle ausstehenden Kopien dieser Arbeit in anderen Planern wie vorgesehen abgebrochen. Dies hat zur Überschreitung des Limits von JobScheduler Jobs geführt. b/111569265
  • Problem mit ConcurrentModificationException in ConstraintTracker behoben. b/112272753
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden in @Nullable anstelle von @NonNull geändert. b/112275229

API-Änderungen

  • Worker erweitert jetzt den neuen Kurs NonBlockingWorker. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wird NonBlockingWorker zu einer vollständig unterstützten Entität für benutzerdefinierte Threading-Lösungen.
  • Die Rückgabetyp-Annotationen von Data.getBooleanArray(String) und Data.getIntArray(String) wurden in @Nullable anstelle von @NonNull geändert. b/112275229
  • Kotlin-Erweiterungen: Map.toWorkData() wurde eingestellt und workDataOf(vararg Pair<String, Any?>) auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.

10. August 2018

Die Navigation „1.0.0-alpha05“ wurde mit Fehlerkorrekturen veröffentlicht.

Fehlerkorrekturen

  • Ein Fehler wurde behoben, der zu einem falschen Backstack-Verhalten geführt hat. b/111907708
  • Ein Fehler in equals() der generierten Args-Klassen wurde behoben. b/111450897
  • Build-Fehler in Safe Args beheben. b/109409713
  • Konvertierung von Ressourcenkennungen in Java-Namen b/111602491 korrigieren
  • Fehlermeldungen bezüglich Null-Zulässigkeit im Safe Args-Plug-in beheben
  • Fügen Sie fehlende Anmerkungen zur Null-Zulässigkeit hinzu.

6. August 2018

AndroidX-Versionen der Releaseversion 2.0.0-rc01 von Lifecycle, Room und Paging. Alle Artefakte sind seit 2.0.0-beta01 unverändert.

1. August 2018

WorkManager

Der WorkManager 1.0.0-alpha06 wurde mit Fehlerkorrekturen veröffentlicht.

Fehlerkorrekturen

  • Datenbanksperrung beim Planen von Aufgaben verhindern. b/111801342
  • Ein Fehler wurde behoben, der dazu geführt hat, dass PeriodicWork im Stromsparmodus nicht wie geplant ausgeführt wurde. b/111469837
  • Eine Race-Bedingung beim Verfolgen von Einschränkungen, die zum Absturz von WorkManager führt, wurde behoben. googlecodelabs/android-workmanager/issues/56
  • Erstellen Sie eindeutige WorkRequests, wenn Sie WorkRequest.Builder#build() verwenden. b/111408337
  • Aktiviert die Verwendung von RescheduleReceiver nur dann, wenn es WorkRequests gibt, die sie benötigen. b/111765853

24. Juli 2018

WorkManager

WorkManager 1.0.0-alpha05 wurde mit wichtigen Fehlerkorrekturen und Änderungen bei der Protokollierung veröffentlicht.

API-Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull anstelle von @Nullable annotiert. Wenn das Singleton-Objekt bei manueller Initialisierung nicht ordnungsgemäß initialisiert wird, gibt die Methode stattdessen ein IllegalStateException aus. Dies ist eine funktionsgefährdende API-Änderung.
  • Es wurde eine neue API (Configuration.Builder.setMinimumLoggingLevel(int)) hinzugefügt, mit der die Ausführlichkeit von WorkManager gesteuert werden kann. Standardmäßig protokolliert WorkManager Log.INFO und höher.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (entspricht implizit null). Diese Änderung der API würde nicht funktionieren.
  • Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]). Dies ist eine funktionsgefährdende API-Änderung.

Fehlerkorrekturen

  • WorkManager führt in bekannten Fällen einer automatischen Sicherung keine Aufgaben mehr aus. Dies könnte zu einem Absturz geführt haben. b/110564377
  • Die doppelte Planung von PeriodicWorkRequests bei Verwendung von JobScheduler wurde korrigiert. b/110798652
  • Es wurde ein Problem behoben, bei dem PeriodicWorkRequests nach dem Stromsparmodus des Geräts nicht korrekt ausgeführt wurden. b/111469837
  • Ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher wurde behoben. b/111141023
  • Einige potenzielle Race-Bedingungen und Zeitprobleme wurden behoben.
  • BroadcastReceiver nicht mehr benötigte Dateien wurden korrekt freigegeben.
  • Optimierte Leistung beim Verschieben von Apps, wenn Apps nach einem erzwungenen Schließen neu gestartet werden.
  • TestScheduler.setAllConstraintsMet(UUID) darf vor oder nach Einreihen der angegebenen WorkRequest in die Warteschlange aufgerufen werden. b/111238024

Wichtige Änderungen

  • WorkManager.getInstance() ist jetzt mit @NonNull anstelle von @Nullable annotiert.
  • Die Signatur von Data.getString() wurde geändert, sodass kein Standardwert mehr verwendet wird (implizit null).
  • Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als @hide gekennzeichnet. Dazu gehören der Constraints-Konstruktor, Data.toByteArray() und Data.fromByteArray(byte[]).

July 19, 2018

Die Navigation 1.0.0-alpha04 und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.

Änderungen bei APIs und des Verhaltens

  • NavHostFragment legt das aktuelle Fragment immer als primäres Navigationsfragment fest, sodass die untergeordneten Fragmentmanager per Pop-up vor dem äußeren NavController-Element übertragen werden b/111345778.

Sichere Argumente

  • Nicht funktionsgefährdende Änderung: app:type wurde zu app:argType geändert, um Konflikte mit anderen Bibliotheken wie ConstraintLayout 2.0.0-alpha1 b/111110548 zu vermeiden
  • Fehlermeldungen von Safe Args sind jetzt anklickbar b/111534438
  • Args-Klassen bestätigen jetzt, dass NonNull-Attribute nicht null sind b/111451769
  • Zu den mit NavDirections und Args generierten Klassen b/111455455 b/111455456 wurden zusätzliche NonNull-Annotationen hinzugefügt.

Fehlerkorrekturen

  • Ein Problem mit der Systemschaltfläche „Zurück“ nach Deeplink zu einem Fragmentziel b/111515685 wurde behoben.

12. Juli 2018

Die Navigation 1.0.0-alpha03 und das zugehörige Safe Args-Gradle-Plug-in enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.

Änderungen bei APIs und des Verhaltens

  • Eine NavigationUI.setupWithNavController-Methode für die Toolbar wurde hinzugefügt: b/109868820
  • Die Methode „NavigationUI.setupWithNavController“ für das CollapsingToolbarLayout wurde hinzugefügt: b/110887183
  • popBackStack() gibt jetzt „false“ zurück, wenn der Back Stack leer ist oder wenn sich die angegebene Ziel-ID nicht im Back Stack befindet b/110893637
  • FragmentNavigator ignoriert jetzt Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, und vermeidet Ausnahmen vom Typ „Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden“ b/110987825

Sichere Argumente

  • Wichtige Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den jeweiligen NavDirections-Methodennamen durch die Camel-Case-Schreibweise ersetzt.
    • Beispiel: DemoController.index wird zu setDemoControllerIndex b/79995048.
    • Beispiel: action_show_settings wird zu actionShowSettings b/79642240
  • Wichtige Änderung: Argumente werden jetzt standardmäßig als ungleich null betrachtet. Fügen Sie app:nullable="true" b/79642307 hinzu, um Nullwerte für String- und parcelable-Argumente zuzulassen.
  • Sie können jetzt app:type="long" mit Standardwerten im Format „123L“ verwenden b/79563966
  • Argumente vom Typ „Parcelable“ werden jetzt unterstützt. Dabei wird ein voll qualifizierter Klassenname für app:type verwendet. Der einzige unterstützte Standardwert ist "@null" b/79563966
  • Args-Klassen implementieren jetzt equals() und hashCode() b/79642246
  • Das SafeArgs-Plug-in kann jetzt auf Bibliotheksprojekte b/80036553 angewendet werden.
  • Das Plug-in „Safe Args“ kann jetzt auf Featureprojekte b/110011752 angewendet werden.

Fehlerkorrekturen

  • Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
  • Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken wurden behoben. b/110178671
  • Probleme bei der Verwendung von setPopUpTo mit dem ersten Ziel in der Grafik b/109909461 behoben
  • Problem behoben, bei dem alle app:defaultValue-Werte als Strings b/110710788 übergeben wurden
  • Mit aapt2 im Bundle mit Android Gradle-Plug-in 3.2 Beta 01 werden jetzt für jedes android:name-Attribut in Navigations-XML-Dateien Keep-Regeln hinzugefügt (b/79874119).
  • Speicherleck beim Ersetzen des Standard-FragmentNavigators b/110900142 behoben

2. Juli 2018

AndroidX-Versionen der Releaseversion 2.0.0-beta01 von Lifecycle, Room und Paging.

Lebenszyklus

Fehlerkorrekturen

  • LifecycleObserver-Proguard-Regel wurde korrigiert, sodass nur Implementierungen und keine Subschnittstellen beibehalten werden b/71389427
  • Korrigierte ViewModel-Proguard-Regeln, um Verschleierung und Verkleinerung zu ermöglichen

Zimmer

Änderungen bei APIs und des Verhaltens

  • RoomDatabase.Builder.setQueryExecutor() hinzugefügt, um anzupassen, wo Abfragen ausgeführt werden
  • RxJava2-Observable-Unterstützung hinzugefügt
  • Generierte DAO- und Datenbankimplementierungen sind jetzt endgültig

Fehlerkorrekturen

  • Klassen-/Feldname in Fehler „Kann Getter für Feld nicht finden“ b/73334503 angeben
  • Abwärtskompatibilität von RoomOpenHelper mit älteren Versionen von Room b/110197391 behoben

Seitenumbruch

Fehlerkorrekturen

  • Problem behoben, bei dem Inhalte in einigen vorangehenden Fällen nicht mehr angezeigt wurden (Platzhalter deaktiviert, PositionalDataSource) b/80149146
  • (Bereits in 1.0.1 veröffentlicht) Behebung von Abstürzen, bei denen PagedListAdapter und AsyncPagedListDiffer Verschiebungsereignisse nicht signalisieren konnten. b/110711937

26. Juni 2018

Seitenumbruch

Die Paginierung 1.0.1 wurde mit einer einzelnen Fehlerkorrektur in runtime veröffentlicht. Aus Gründen der Stabilität empfehlen wir dringend, 1.0.1 zu verwenden. Das Paging in RxJava2 1.0.1 wurde ebenfalls veröffentlicht und ist mit 1.0.0-rc1 identisch.

Fehlerkorrekturen

  • Es wurden Abstürze behoben, bei denen PagedListAdapter und AsyncPagedListDiffer Verschiebungsereignisse nicht signalisieren konnten. b/110711937

WorkManager

WorkManager 1.0.0-alpha04 wird veröffentlicht.

Fehlerkorrekturen

  • PeriodicWorkRequests werden jetzt korrekt neu geplant, wenn die AlarmManager-basierte Implementierung verwendet wird.

  • Ein potenzieller ANR-Fehler wurde behoben, wenn alle Worker nach einem erzwungenen Stopp oder einem Neustart neu geplant wurden. b/110507716

  • Annotationen zur Null-Zulässigkeit wurden verschiedenen WorkManager APIs hinzugefügt. b/110344065

  • Nicht erfasste Ausnahmen protokollieren, die während der Worker-Ausführung auftreten. b/109900862

  • destruktive Datenbankmigrationen sind zulässig, falls Sie ein Rollback auf eine ältere Version von WorkManager ausführen möchten. b/74633270

  • Ein Migrationsabsturz bei der Erstellung doppelter impliziter Tags wurde behoben. Dieses sehr seltene Problem trat nur auf, wenn Sie dasselbe implizite Tag-Format selbst verwendet haben.

19. Juni 2018

Zimmer

Raum 1.1.1 wird freigegeben. Dieser Release ist mit Raum 1.1.1-rc1 identisch.

WorkManager

WorkManager 1.0.0-alpha03 wird veröffentlicht.

Fehlerkorrekturen

  • Eine Race-Bedingung in der AlarmManager-basierten Implementierung wurde behoben. b/80346526.

  • Doppelte Jobs bei der Verwendung von JobScheduler nach einem Geräteneustart wurden behoben.

  • Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach Neustarts bestehen. b/80234744

  • Updates der Dokumentation. b/109827628, b/109758949, b/80230748

  • Ein Absturz beim erneuten Einreihen von WorkRequest in die Warteschlange wurde behoben. b/109572353.

  • Die Kotlin-Compiler-Warnungen bei Verwendung der work-runtime-ktx-Abhängigkeit wurden behoben.

  • WorkManager verwendet jetzt Version 1.1.1-rc1 von Room.

API-Änderungen

  • getStatusesSync() wurde hinzugefügt, die synchrone Version von WorkContinuation.getStatuses().

  • Worker kann zwischen einem vom Nutzer initiierten Abbruch und einem temporären vom Betriebssystem angeforderten Beenden unterscheiden. Worker.isStopped() gibt true zurück, wenn eine Haltestelle angefordert wurde. Worker.isCancelled() gibt true zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247

  • Unterstützung für JobParameters#getNetwork() in API 28 hinzugefügt. Dies wird über Worker.getNetwork() angezeigt.

  • Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) wurde hinzugefügt, damit Sie erzwingen können, wie viele Jobs an JobScheduler oder AlarmManager gesendet werden können. So wird verhindert, dass WorkManager alle verfügbaren JobScheduler-Slots belegt.

  • Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) wurde hinzugefügt, um einen Bereich von JobScheduler-Job-IDs zu definieren, die von WorkManager sicher verwendet werden können. b/79996760

  • Worker.getRunAttemptCount() gibt die aktuelle Anzahl der Ausführungen für eine bestimmte Worker zurück. b/79716516

  • Mit WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) können Sie eindeutige PeriodicWorkRequests in die Warteschlange stellen. b/79600647

  • WorkManager.cancelAllWork() bricht alle Worker-Vorgänge ab. Bibliotheken, die von WorkManager abhängig sind, können mithilfe von WorkManager.getLastCancelAllTimeMillis() abfragen, wann diese Methode zuletzt aufgerufen wurde, um den internen Status zusätzlich zu bereinigen.

  • WorkManager.pruneWork() wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758

Änderungen des Verhaltens

  • Es wurde ein implizites Tag für alle WorkRequest-Elemente hinzugefügt. Das ist der voll qualifizierte Klassenname für Worker. Dadurch können Sie WorkRequest-Werte ohne tag-Werte entfernen oder wenn id nicht verfügbar ist. b/109572351

Wichtige Änderungen

  • Worker.WorkerResult wurde in Worker.Result umbenannt.

  • Worker.onStopped verfügt jetzt über einen zusätzlichen isCancelled-Parameter, der auf true gesetzt wird, wenn Worker explizit abgebrochen wurde.

7. Juni 2018

Die Navigation „1.0.0-alpha02“ wird freigegeben.

Änderungen des Verhaltens

  • FragmentNavigator verwendet jetzt setReorderingAllowed(true). b/109826220

  • Navigation jetzt URLDecodiert Argumente, die von Deeplinks-URLs geparst wurden. b/79982454

Fehlerkorrekturen

  • Ein IllegalStateException beim Aufrufen von Navigation über Fragment-Lebenszyklusmethoden wurde behoben. b/79632233

  • Die Navigation hängt jetzt von der Supportbibliothek 27.1.1 ab, um Flackern bei der Verwendung von Animationen zu beheben. b/80160903

  • Ein IllegalArgumentException wurde behoben, wenn defaultNavHost="true" als untergeordnetes Fragment verwendet wurde. b/79656847

  • Ein StackOverflowError bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065

  • Ein IllegalArgumentException beim Zurückkehren zu einem verschachtelten Diagramm wurde behoben. b/80453447

  • Ein Problem mit sich überschneidenden Fragmenten bei Verwendung von launchSingleTop wurde behoben. b/79407969

  • Durch die Navigation wird jetzt der richtige synthetische Back-Stack für verschachtelte Grafiken erstellt. b/79734195

  • Über NavigationUI wird jetzt das richtige Element hervorgehoben, wenn ein verschachteltes Diagramm als MenuItem verwendet wird. b/109675998

API-Änderungen

  • Das Attribut clearTask für Aktionen und die zugehörige API in NavOptions wurde eingestellt. b/80338878

  • Das Attribut launchDocument für Aktionen und die zugehörige API in NavOptions wurde eingestellt. b/109806636

24. Mai 2018

WorkManager 1.0.0-alpha02 wird veröffentlicht.

WorkManager

Fehlerkorrekturen

  • Problem mit NullPointerException für State.isFinished() behoben. b/79550068

  • Ein Problem wurde behoben, durch das Workers am Application.onCreate() verschoben wurden. B/79660657

  • Es wurde ein Problem behoben, bei dem Sie mehr Arbeit planen konnten, als vom Betriebssystem zulässig ist. b/79497378

  • Bereinigung von Wakelocks, die mit Workers verknüpft sind, wurde in den Hintergrundthread verschoben.

  • Die AlarmManager-Implementierung bereinigt jetzt korrekt, wenn alle ausstehenden Arbeiten abgeschlossen sind.

  • Das Problem mit Cleanup-SQL-Abfragen, die sich auf nicht englischsprachige Sprachen ausgewirkt haben, wurde behoben. b/80065360

  • Unterstützung für floats in Data hinzugefügt. b/79443878

  • Data.Builder.putAll() gibt jetzt eine Instanz von Builder zurück. b/79699162

  • Weitere Javadoc und Fehlerbehebungen in der Dokumentation. b/79691663

API-Änderungen

  • Worker können reagieren, wenn sie angehalten werden. Mit Worker.isStopped() kann geprüft werden, ob eine Worker beendet wurde. Worker.onStopped() kann für einfache Bereinigungsvorgänge verwendet werden.

  • Die Worker.getTags() API gibt ein Set mit Tags zurück, die mit Worker verknüpft sind.

  • javax.time.Duration-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer und TimeUnits erfordern. Dieser Vorgang wird von @RequiresApi(26) geschützt.

  • WorkManager Erweiterungen wurden aus dem androidx.work.ktx-Paket in das androidx.work-Paket verschoben. Die alten Erweiterungen wurden eingestellt und werden in einer zukünftigen Version entfernt.

  • Configuration.withExecutor() wurde verworfen. Verwende stattdessen Configuration.setExecutor().

16. Mai 2018

Das Paging RxJava2 1.0.0-rc1 und Room 1.1.1-rc1 wurden veröffentlicht. Wir empfehlen dringend, den Raum 1.1.1-rc1 anstelle von 1.1.0 zu verwenden, wenn Sie Migrationen nutzen.

Zimmer

Es wurde ein Fehler behoben, bei dem Room die Initialisierung nach der Migration nicht richtig verarbeitet hat b/79362399

Seitenumbruch

Das Paging rxjava2 wird zum Releasekandidat ohne Änderungen gegenüber der ersten Alphaversion verschoben.

8. Mai 2018

Paging 1.0, Navigation und WorkManager Alphas, Room 1.1, AndroidX

Paging 1.0.0 und Room 1.1.0 werden zusammen mit den Alphas für zwei neue Architekturkomponenten veröffentlicht: Navigation und WorkManager.

Für die Optionen für Seiten und Räume wurden seit den neuesten Release-Kandidaten keine Änderungen vorgenommen.

Neue Mediathek: Navigation

Die Navigation bietet ein Framework zum Erstellen der In-App-Navigation. Dieser erste Release ist 1.0.0-alpha01.

Neue Bibliothek: WorkManager

WorkManager vereinfacht die Planung und Ausführung garantierter, beschränkungsbasierter Hintergrundarbeiten. Dieser erste Release ist 1.0.0-alpha01.

AndroidX

Architekturkomponenten werden Teil von AndroidX, einschließlich aktualisierter Paketnamen, Artefaktnamen und Abhängigkeiten von anderen AndroidX-Bibliotheken. Diese werden unter Version 2.0.0-alpha1 veröffentlicht und können in Verbindung mit anderen AndroidX-Bibliotheken verwendet werden.

Kotlin-Erweiterungen

Für ViewModel, ReactiveStreams und Sqlite (früher „Database“-Komponente von Room) wurden als Teil des AndroidX-Alpharelease Kotlin-Erweiterungsbibliotheken hinzugefügt. Darüber hinaus enthalten Navigation und WorkManager die Module -ktx. Die einzelnen Erweiterungsmodule finden Sie unter Komponenten hinzufügen.

2. Mai 2018

  • Releasekandidat für Raum 1.1.0
  • Raum 1.1.0-rc1 wird freigegeben.

Fehlerkorrekturen

  • Room ist jetzt mit Kotlin-Code 1.2.40 kompatibel. B/78328708

19. April 2018

Kandidat für Paging-Release

Die Auslagerung 1.0.0-rc1 und der Raum 1.1.0-beta3 wurden freigegeben.

Seitenumbruch

Es gibt keine weiteren bekannten Probleme oder neuen Funktionen, die für den Paging-1.0.0-Release geplant sind. Aktualisiere deine Projekte auf 1.0.0-rc1 und hilf uns dabei, Tests durchzuführen, damit wir eine solide 1.0.0 liefern können.

In diesem Release wurden keine Änderungen vorgenommen. Er entspricht der 1.0.0-beta1.

Zimmer

Fehlerkorrekturen

  • Kompilierungsfehler beheben, wenn ein Kotlin-POJO auf eine Beziehungsentität verweist, die in Java b/78199923 definiert wurde

5. April 2018

Raum 1.1.0-beta2, Paging 1.0.0-beta1 und Paging RxJava 1.0.0-alpha1 wurden freigegeben.

Das Paging befindet sich für kurze Zeit in der Betaphase, bevor es zur Freigabe eines Kandidaten läuft. Wir planen keine weiteren API-Änderungen für Paging 1.0 und die Anforderungen an API-Änderungen sind sehr hoch.

Die Alpha RxJava2-Unterstützung für Paging wird als separates optionales Modul (android.arch.paging:rxjava2:1.0.0-alpha1) veröffentlicht und vorübergehend separat versioniert, bis sich stabilisiert hat.

Diese neue Bibliothek bietet eine RxJava2-Alternative zu LivePagedListBuilder, mit der Observables und Flowables erstellt werden können. Dabei werden Schedulers anstelle von Executors verwendet:

Kotlin

val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50)
        .setFetchScheduler(myNetworkScheduler)
        .buildObservable()

Java

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Seitenumbruch

Neue Funktionen

  • RxPagedListBuilder wird über das neue android.arch.paging:rxjava2-Artefakt hinzugefügt.

API-Änderungen

  • API-Änderungen, um die Rolle von Executors in Buildern zu verdeutlichen:

    • setBackgroundThreadExecutor() wurde in setFetchExecutor() umbenannt (in PagedList.Builder und LivePagedListBuilder)

    • setMainThreadExecutor() wurde in PagedList.Builder in setNotifyExecutor() umbenannt.

  • Der Status von PagedList.mCallbacks Mitglied wurde als privat gekennzeichnet.

Fehlerkorrekturen

  • LivePagedListBuilder löst den ersten PagedList-Ladevorgang im angegebenen Executor anstelle des E/A-Thread-Pools von Arch-Komponenten aus.

  • Behebung des Verhaltens bei der Entwertung in internen DataSource-Wrappern (wird verwendet, um DataSource.map sowie das Laden von PositionalDataSource ohne Platzhalter zu implementieren) b/77237534

Zimmer

Fehlerkorrekturen

  • Es wurde ein kritischer Fehler in den Rx-Implementierungen Single und Maybe des Raums behoben, bei dem die Abfrage im Voraus wiederverwendet wurde, was zu Problemen führte, wenn Sie den zurückgegebenen Single- oder Maybe-Sofortwerten mehr als einen Beobachter hinzufügen. b/76031240

  • RoomDatabase.clearAllTables gibt für die Datenbank keinen VACUUM-Wert an, wenn sie innerhalb einer Transaktion aufgerufen wird. b/77235565

21. März 2018

Raum 1.1.0-beta1, Paging 1.0.0-alpha7 und Lebenszyklen 1.1.1 werden freigegeben.

Zimmer

API-Änderungen

Fehlerkorrekturen

  • RoomDatabase.clearAllTables versucht nun, Speicherplatz an das Betriebssystem zurückzugeben, indem ein WAL-Prüfpunkt festgelegt und die Datenbank VACUUM ausgeführt wird.

  • @RawQuery akzeptiert jetzt alle Pojos für die observedEntities-Property, solange das Pojo über seine Embedded-Felder oder Relations auf eine oder mehrere Entitäten verweist. b/74041772

  • Paging: Die DataSource-Implementierung von Room verarbeitet jetzt Abhängigkeiten mit mehreren Tabellen (z. B. Beziehungen und Joins). Bisher lösten diese keine neuen Ergebnisse aus oder konnten nicht kompiliert werden. b/74128314

Lebenszyklen

Nur eine kleine Änderung: android.arch.core.util.Function wird von arch:runtime nach arch:common verschoben. Dadurch kann sie ohne die Laufzeitabhängigkeit verwendet werden, z.B. in paging:common unten.

lifecycle:common ist eine Abhängigkeit von lifecycle:runtime. Diese Änderung wirkt sich daher nicht direkt auf lifecycle:runtime aus, sondern nur auf Module, die wie die Paginierung direkt von lifecycle:common abhängig sind.

Seitenumbruch

Die Paginierung 1.0.0-alpha7 wird zusammen mit den Lebenszyklen 1.1.1 freigegeben. Da das Auslagerungs-Alpha7 von der Verschiebung der oben erwähnten Function-Klasse abhängt, müssen Sie die lifecycle:runtime-Abhängigkeit auf android.arch.lifecycle:runtime:1.1.1 aktualisieren.

Die Paginierung alpha7 ist voraussichtlich die letzte Veröffentlichung vor der Betaversion der Paginierung.

API-Änderungen

  • DataSource.LoadParams-Objekte haben jetzt einen öffentlichen Konstruktor und DataSource.LoadCallback-Objekte sind jetzt abstrakt. So können Sie einen DataSource umschließen oder ein DataSource direkt mit einem simulierten Callback testen. b/72600421
  • Mapper für DataSource und DataSource.Factory
    • Mit map(Function<IN,OUT>) können Sie Ergebnisse, die von einem DataSource geladen wurden, transformieren, zusammenfassen oder gestalten.
    • mapByPage(<List<IN>,List<OUT>>) ermöglicht dasselbe für die Batchverarbeitung (z.B. wenn aus SQL geladene Elemente zusätzlich eine separate Datenbank abfragen müssen, was als Batch ausgeführt werden kann).
  • PagedList#getDataSource() wird als praktische Methode hinzugefügt: b/72611341
  • Alle verworfenen Klassen wurden aus der API entfernt, einschließlich der Reste des recyclerview.extensions-Pakets und der LivePagedListProvider.
  • DataSource.Factory wird von einer Schnittstelle in eine abstrakte Klasse geändert, um Kartenfunktionen zu aktivieren.

Fehlerkorrekturen

  • Die Builder wurden in endgültig geändert. b/70848565
  • Die Implementierung von Room DataSource wurde korrigiert, sodass Abfragen mit mehreren Tabellen verarbeitet werden können. Diese Fehlerkorrektur ist in Room 1.1.0-beta1 enthalten (siehe oben).
  • Es wurde ein Fehler behoben, bei dem BoundaryCallback.onItemAtEndLoaded für PositionalDataSource nicht aufgerufen wurde, wenn Platzhalter aktiviert sind und die Gesamtgröße ein exaktes Vielfaches der Seitengröße ist.

2. März 2018

Raum 1.1.0-alpha3 wird freigegeben. Dies ist die letzte geplante Alphaversion für Raum 1.1.0.

API-Änderungen

  • Die Methoden addObserver und removeObserver von InvalidationTracker sind jetzt synchron und müssen in einem Nicht-UI-Thread aufgerufen werden. Dadurch werden einige Race-Bedingungen beim Beobachten von Tabellen verhindert.

  • Für die Klasse RoomDatabase gibt es eine neue Methode clearAllTables(), mit der alle Tabelleninhalte gekürzt werden. b/63807999

  • SupportSQLiteQuery verfügt jetzt über eine getArgCount()-Methode, die die Anzahl der Abfrageparameter zurückgibt. b/67038952

Fehlerkorrekturen

  • @RawQuery wird jetzt korrekt für Paging-Abfragen unterstützt. b/72600425

  • Die Dao-Klassen des Raums wurden jetzt korrekt benannt, um Namenskonflikte zu vermeiden, wenn zwei oder mehr Dao-Schnittstellen innere Klassen im selben Paket sind und denselben Namen haben. b/73536380

  • Generische Feldtypen in Pojo werden ordnungsgemäß als Mitglied der Erweiterungsklasse geparst. b/73534868

  • Abfrageparameter in Dao-Schnittstellen, die von Abhängigkeitsartefakten übernommen werden, werden jetzt ordnungsgemäß geparst. b/68118746

  • Abfragen, die für @Relations generiert werden, maskiert die Feldnamen jetzt korrekt. b/70925483

27. Februar 2018

Die Auslagerung 1.0.0-alpha6 wurde zusammen mit der Support Library-Version 27.1.0 veröffentlicht. ListAdapter und einige verwandte Klassen wurden aus der Paging Library direkt in Recyclerview verschoben. Außerdem wurden einige Klassen umbenannt, um die Funktion bestimmter Klassen zu verdeutlichen. Diese Alphaversion von Paging ist wahrscheinlich die letzte mit funktionsgefährdenden Änderungen an den APIs.

API-Änderungen

  • Nach recyclerview-v7 verschobene Klassen:
    • ListAdapter
  • Klassen umbenannt und in recyclerview-v7 verschoben:
    • ListAdapterHelper -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> DiffUtil.ItemCallback
  • In paging-runtime umbenannte Klassen:
    • PagedListAdapterHelper -> AsyncPagedListDiffer

Die verschobenen Klassen waren unabhängig von der Paging Library neben RecyclerView nützlich. Das bedeutet, dass sie verwendet werden können, ohne von einer Alphaversion für Paging abhängig zu sein. Es bedeutet aber auch, dass Apps, die Paging verwenden, gleichzeitig auf Alpha 6 und Support Library 27.1.0 aktualisiert werden müssen.

** Migrationsanleitung für Paging Alpha6: **

  • Paging- und recyclerview-Abhängigkeiten auf android.arch.paging:runtime:1.0.0-alpha6 und com.android.support:recyclerview-v7:27.1.0 aktualisieren
    • Diese Schritte müssen gleichzeitig erfolgen, da ListAdapter von der Auslagerung in die RecyclerView verschoben wurde.
  • Aktualisieren Sie alle Verweise von ListAdapterHelper auf AsyncListDiffer.
    • getItem(index)/getItemCount() wurden entfernt, zugunsten des Aufrufs von getCurrentList().getItem(index) und getCurrentList().size(), die expliziter sind.
  • Alle Verweise von ListAdapterConfig auf AsyncDifferConfig aktualisieren
  • Alle Verweise von DiffCallback auf DiffUtil.IttemCallback aktualisieren
  • Alle Verweise von PagedListAdapterHelper auf AsyncPagedListDiffer aktualisieren
  • Verweise von setList() auf submitList() aktualisieren
    • umbenannt, um die Asynchronität der Listendifferenzierung zu verdeutlichen

Fehlerkorrekturen

  • Das Übergeben einer falschen Anfangsposition an den ersten Ladevorgang, wenn Platzhalter deaktiviert sind, wurde behoben. b/73513780

15. Februar 2018

Raum 1.1.0-alpha2 wird freigegeben.

Neue Funktionen

  • Room unterstützt jetzt das Öffnen der Datenbank im Write-Ahead-Logging-Modus. In diesem Modus blockieren Ihre Schreibvorgänge nicht mehr Ihre Leseabfragen. Dieser Modus ist in der Regel schneller, obwohl er aufgrund mehrerer Verbindungen mehr Arbeitsspeicher verbraucht. Standardmäßig verwendet Room WAL, wenn das Gerät den Status API 16 oder höher hat und es kein Gerät mit wenig Arbeitsspeicher ist. Sie können dieses Verhalten mithilfe der Methode setJournalMode() für RoomDatabase.Builder steuern. b/67757002

  • Guava-Support: Room unterstützt jetzt die Rückgabe von Guava Optional<T> oder ListenableFuture<T> in DAO-Abfragen. Wenn Sie ListenableFuture<T> verwenden möchten, müssen Sie das Artefakt guava aus dem Raum (android.arch.persistence.room:guava:1.1.0-alpha2) importieren.

  • In Chatroom wird jetzt die Rückgabe von java.util.Optional<T> aus DAO-Abfragen unterstützt.

  • Schnittstellenmethoden mit Standardimplementierungen werden jetzt in @Transaction-Methoden in DAO-Klassen unterstützt. Dies funktioniert sowohl für Java 8 als auch für Kotlin. b/72416735

Fehlerkorrekturen

  • Konstruktoren mit @Relation verursachen keinen Kompilierungsfehler, wenn ein anderer Konstruktor vorhanden ist, der verwendet werden kann. b/72884434

  • Tabellennamen, die in @Query-Methoden mit ' maskiert sind, werden jetzt korrekt für den Entwertungs-Tracker maskiert. b/72366965

  • Room verwendet jetzt die Kotlin-Annotationen @Metadata, um die Klassenstruktur während der Annotationsverarbeitung zu lesen. Dadurch können die Namen der Konstruktorparameter auch dann korrekt gelesen werden, wenn ein Pojo aus einer Abhängigkeit übernommen wird. b/67181813

  • Ein Problem bei der Suche nach Downgrade-Migrationspfaden wurde behoben. b/72153525

  • Nicht standardmäßige Spaltentypen werden jetzt bei der Migration von einer vorhandenen Datenbank zu Room korrekt verarbeitet. b/71953987

  • Room verarbeitet jetzt persistente boolean?-Felder in Kotlin-Klassen ordnungsgemäß. b/72786402

22. Januar 2018

Die Lebenszyklen 1.1.0, Raum 1.1.0-alpha1 und Paginierung 1.0.0-alpha5 werden freigegeben.

Lebenszyklus 1.1.0

Änderungen bei der Paketerstellung

Jetzt sind neue, viel kleinere Abhängigkeiten verfügbar:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

API-Änderungen

  • Die verworfenen LifecycleActivity und LifecycleFragment wurden jetzt entfernt. Verwende FragmentActivity, AppCompatActivity oder unterstützt Fragment.
  • ViewModelProviders und ViewModelStores wurden @NonNull Anmerkungen hinzugefügt
  • Der ViewModelProviders-Konstruktor wurde verworfen – verwende die statischen Methoden direkt
  • ViewModelProviders.DefaultFactory wurde eingestellt – verwende ViewModelProvider.AndroidViewModelFactory
  • Die statische Methode ViewModelProvider.AndroidViewModelFactory.getInstance(Application) wurde hinzugefügt, um eine statische Factory abzurufen, die zum Erstellen von ViewModel- und AndroidViewModel-Instanzen geeignet ist.

Raum 1.1.0-alpha1

Neue Funktionen

  • RawQuery: Mit dieser neuen API können @Dao-Methoden den SQL-Code als Abfrageparameter b/62103290, b/71458963, empfangen
  • fallBackToDestructiveMigrationsFrom: Mit dieser neuen API in RoomDatabase.Builder können Sie genauer steuern, ab welcher Start von Schemaversionen destruktive Migrationen zulässig sind (im Vergleich zu „fallbackToDestructiveMigration“). b/64989640
  • Room unterstützt jetzt nur neuere Paging APIs (Alpha-4+). Der eingestellte LivePagedListProvider wird nicht mehr unterstützt. Wenn Sie die neue Alphaversion des Raums verwenden möchten, müssen Sie für das Seitenformat alpha-4 oder höher verwenden und von LivePagedListProvider zu LivePagedListBuilder wechseln, falls noch nicht geschehen.

Fehlerkorrekturen

  • Verbesserte Unterstützung für Kotlin-Kapt-Typen. b/69164099
  • Durch die Reihenfolge der Felder wird das Schema nicht mehr ungültig. b/64290754

Paging 1.0.0-alpha5

Fehlerkorrekturen

  • Probleme mit dem Laden von Seiten bei deaktivierten Platzhaltern beheben b/70573345
  • Zusätzliches Logging zum Aufspüren des Fehlers vom Typ „geschuldet“ b/70360195 (und spekulative raumseitige Korrektur)
  • Fehlerbehebungen für Javadoc-Beispielcode b/70411933, b/71467637

11. Dezember 2017

Die Paginierung alpha4-1 wird freigegeben. Dies ist eine kleine Version zur Fehlerkorrektur für Paging Alpha 4.

Fehlerkorrekturen

7. Dezember 2017

Die Paginierung alpha4 wurde mit erheblichen Änderungen und Ergänzungen veröffentlicht, hauptsächlich für das Targeting auf Netzwerk-, Netzwerk- und Datenbankanwendungsfälle.

API-Änderungen

  • DataSource ist jetzt eine asynchrone API, um das Paging direkt aus dem Netzwerk zu vereinfachen:

    • Einzelner Einstiegspunkt für anfängliche Größe und Daten
    • Unterstützt Wiederholungsversuche im Netzwerk, indem der Callback festgehalten und später gesendet wird
    • Threadsichere Callbacks ermöglichen ein asynchrones Laden zum Erstellen eines einzelnen netzwerkgestützten PagedList im UI-Thread.
    • Klareres Fehlerverhalten bei Parametern für das anfängliche Laden
  • TiledDataSource wird in PositionalDataSource umbenannt, um die positionsbasierte Indexierung sowie die Tatsache zu berücksichtigen, dass bei deaktivierten Platzhaltern keine Kacheln angezeigt werden.

  • PageKeyedDataSource wird hinzugefügt, um nächste/vorherige Tokens zu unterstützen, die in Netzwerkseitenladevorgänge eingebettet sind. KeyedDataSource wurde in ItemKeyedDataSource umbenannt, um den Unterschied zu verdeutlichen.

  • LivePagedListProvider wird durch LivePagedListBuilder und DataSource.Factory ersetzt. Der Builder bietet die gleiche Funktion mit mehr Anpassungsmöglichkeiten und einfacheren Standardeinstellungen. Durch die Factory kann der DataSource-Generierungscode unabhängig von LiveData bleiben.

  • PagedList.BoundaryCallback wurde für den Anwendungsfall „Datenbank und Netzwerk“ hinzugefügt.

  • Der PagedList.Builder-Konstruktor verwendet DataSource + PagedList.Config, die jetzt LivePagedListBuilder ähneln, und ermöglicht den Diamant-Operator in der Sprache Java oder abgeleitete Typen in Kotlin.

  • PagedList.getConfig() wurde hinzugefügt und PagedList.Config hat jetzt Eigenschaften für öffentliche Mitglieder.

  • KeyedDataSource.loadBefore() erwartet keine umgekehrten Ergebnisse mehr.

  • PagedListAdapter.onCurrentListChanged() wurde hinzugefügt, um auf Aktualisierungen zu warten, auf denen PagedList angezeigt wird.

Fehlerkorrekturen

  • IndexOutOfBoundsException in PagedListAdapter(Helper) b/67883658 behoben

1.0.0 – 6. November 2017

Alle Hauptkomponenten (außer Paging) sind jetzt 1.0.0. Dies ist derselbe Release wie rc1 mit Ausnahme einer Änderung an der reactivestreams-Bibliothek.

Fehlerkorrekturen

Releasekandidat – 18. Oktober 2017

Alle wichtigen Artefakte (außer Paging) sind jetzt 1.0.0-rc1.

Für den Release 1.0.0 sind keine weiteren bekannten Probleme oder neuen Funktionen geplant. Aktualisiere deine Projekte auf 1.0.0-rc1 und hilf uns bei Tests, damit wir eine solide 1.0.0 liefern können.

Verhaltensänderung

  • In diesem Release wird Lifecycle.Event#ON_STOP jetzt gesendet, wenn onSaveInstanceState aufgerufen wird (zuvor wurde es gerade als CREATED markiert, ohne ON_STOP zu senden). Weitere Informationen finden Sie in der Dokumentation zu Lebenszyklen.

Fehlerkorrekturen

  • Chatroom:

    • Der Raum hängt jetzt vom neuesten xerialen Artefakt ab, das die OutOfMemory-Probleme während der Kompilierung behebt. b/62473121
    • Query-Methoden können jetzt mit @Transaction annotiert werden. Weitere Informationen finden Sie in der Referenzdokumentation zu @Transaction. b/65112315
    • Die Klasse StringUtil in Room wird aus der öffentlichen API entfernt. Sie war nie als öffentliche API vorgesehen.
  • Lebenszyklen:

    • LiveData funktioniert ordnungsgemäß, wenn die Aktivität teilweise von API < 24 abgedeckt ist. b/65665621

    • OnLifecycleEvent-Methoden in übergeordneten Klassen werden jetzt ordnungsgemäß aufgerufen oder während der Kompilierung wird eine Warnung ausgegeben, wenn dies nicht möglich ist. b/63474615

    • Im Lebenszyklus wird jetzt ein WeakReference an den LifecycleOwner zurückgehalten, damit der LifecycleOwner nicht verloren geht, wenn der Lebenszyklus länger als gewöhnlich im Arbeitsspeicher gehalten wird. Dies ist nur eine Vorsichtsmaßnahme und Sie sollten trotzdem darauf achten, kein Datenleck für Lifecycle zu verlieren.

9. Oktober 2017

Die Paginierung alpha-3 wird freigegeben. Dadurch ist sie mit dem beta 2-Release von Lebenszyklen und Raum kompatibel.

Fehlerkorrekturen

  • Die Dokumentation zu Seitenumbrüchen wurde verbessert.

5. Oktober 2017

Alle wichtigen Artefakte (außer Paging) sind jetzt beta 2. In dieser Version gibt es keine neue Version von Paging.

Fehlerkorrekturen

  • Lebenszyklen:

    • LiveDataReactiveStreams beendet das Abo des Quell-Publishers jetzt ordnungsgemäß, wenn LiveData nicht aktiv ist. b/62609183
    • Lebenszyklusereignisse werden ordnungsgemäß an übergeordnete Klassen weitergegeben, wenn die übergeordnete Klasse aus einem anderen Modul stammt. b/63474615
    • LiveData verarbeitet Beobachter ordnungsgemäß, wenn sie das Abo während der Aboerstellung beenden. b/66337741
    • Das Sprachartefakt FullLifecycleObserver für Java 8 ist jetzt in der Abhängigkeitsstruktur verfügbar. b/66525578

    • Fügen Sie Ihrer Proguard-Datei die folgenden Zeilen hinzu. (Dies ist bei Auslieferung von Version 1.0.0 nicht erforderlich.)

      • -keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
  • Chatroom:

    • Room gibt jetzt bei der Kompilierung einen Fehler aus, wenn das zurückgegebene Pojo in einer @Query-Methode ein @NonNull-Feld enthält, das mit keiner der Spalten in der Abfrageantwort übereinstimmt. Wenn das Feld @Nullable ist, gibt Room nur eine Warnung aus. b/67115337
    • Room validiert jetzt Indexe in neueren Betriebssystemversionen. b/63132683
    • Der Room wählt standardmäßig den no-arg-Konstruktor aus, wenn in einem Pojo mehrere übereinstimmende Konstruktoren vorhanden sind. b/67353427
    • Primärschlüssel einer einzelnen Spalte können Nullable sein, wenn es sich um Integer oder Long handelt. b/67086876
    • Entwertungs-Tracker verarbeitet die erneute Eingabe im Testmodus ordnungsgemäß. b/65471397
    • Room prüft jetzt beim Kompilieren auf ungültige Zeichen in Spalten- und Tabellennamen (ungültige Zeichen: `, "). b/64749111

21. September 2017

In diesem Release erreichen alle Architekturkomponentenmodule mindestens beta 1 (mit Ausnahme der neuen Auslagerungsbibliothek, die alpha 2 ist).

Wir planen keine weiteren API-Änderungen. Es kann zu ungeplanten Änderungen kommen, aber die Schwelle zum Ändern einer API vor dem Wechsel von 1.0.0 ist sehr hoch und wird eher nicht eintreten.

  • LifecycleActivity und LifecycleFragment werden entfernt, bevor 1.0.0 stabil ist. Sie werden bei Verwendung der Supportbibliothek 26.1.0 oder höher nicht benötigt.

Im Gegensatz zur Alphaphase ist für die Betaphase eine sehr kurze Dauer geplant.

Versionsänderungen

  • Lebenszykluserweiterungen und Chatrooms sind jetzt beta 1
  • Paging ist jetzt alpha 2
  • Keine Änderungen bei den Lebenszyklen (Laufzeit, häufig) und Arch Core (allgemein). Beide Artefakte sind seit dem 13. September Version 1.0.0.

Neue Artefakte

  • Lebenszyklen haben jetzt ein neues Artefakt namens common-java8. Dieses Artefakt enthält die neue Schnittstelle DefaultLifecycleObserver, die Standardimplementierungen für alle Lebenszyklusmethoden hat. Wenn Sie die Sprache Java 8 verwenden, sollten Sie dieses Artefakt gegenüber Annotationen vorziehen.

    • Aufgrund eines Fehlers in beta1 müssen Sie eine explizite Abhängigkeit vom Modul android.arch.lifecycle:common:1.0.1 hinzufügen, um das neue Artefakt common-java8 zu verwenden. Dieses Problem wird in beta2 behoben.

Änderungen bei der Paketerstellung

  • android.arch.persistence.room.db wurde zu android.arch.persistence.db verschoben
  • android.arch.persistence.room.db-impl wurde verschoben und in android.arch.persistence.db-framework umbenannt

Beide Artefakte sind bereits von Room abhängig. Sofern Sie sie nicht direkt verwendet haben, sollten Sie in Ihren Build-Dateien nichts ändern müssen.

API-Änderungen

  • Chatroom:

    • Die @ColumnInfo-Annotation unterstützt jetzt das Festlegen einer Sortierung für die Spalte. b/62007004
    • transient-Felder werden jetzt standardmäßig ignoriert, es sei denn, sie sind mit @ColumnInfo, @Embedded oder @Relation annotiert. b/62600692
    • Primärschlüssel müssen mit @NonNull annotiert werden, sofern sie nicht automatisch generiert werden. b/64292391
      • Für diese Änderung ist möglicherweise eine Schemamigration erforderlich. Für die Unannehmlichkeiten möchten wir uns entschuldigen.
    • Es wurde eine neue Convenience-Annotation (@Transaction) hinzugefügt, die eine DAO-Methode überschreibt und innerhalb einer Transaktion ausführt.
  • SQLite-Datenbank unterstützen:

  • Seitenumbruch:

    • Verbesserte Paging-Dokumentation mit mehr Beispielen und Thread-Annotationen.

Fehlerkorrekturen

  • Raum:
    • Mehrzeilige Kotlin-Strings in @Query-Methoden werden ordnungsgemäß verarbeitet. b/65809374
  • Paging:
    • Das Pagingartefakt hängt nicht mehr von junit ab. b/65690261

1.0.0 Alpha 9-1 – 13. September 2017

Dies ist eine Hauptversion, bei der zentrale Lebenszyklusartefakte (Laufzeit, allgemein) und Archkern (allgemein) die stabile Version 1.0.0 erreichen.

Neben dieser Änderung hängt die Supportbibliothek 26.1.0 jetzt von diesen Bibliotheken ab. Sowohl AppCompatActivity als auch Support Fragment implementieren jetzt die LifecycleOwner-Schnittstelle.

Dieser Release hängt außerdem von der Supportbibliothek 26.1.0 ab, um die Vorteile der neuen Integration nutzen zu können.

Neue Bibliothek: Paging

Dieses Release beinhaltet auch eine neue Bibliothek namens Paging, mit der große Datensätze bei Bedarf ganz einfach stückweise in eine RecyclerView geladen werden können. Das Paging wird als alpha1 veröffentlicht und hat einen eigenen Releasezyklus.

API-Änderungen

Fehlerkorrekturen

  • Generierte Klassen werden jetzt mit @Generated annotiert, wenn die Anwendung die Annotation im Klassenpfad enthält. b/35754819

  • Der Fehler beim Beobachtervergleich von MediatorLiveData wurde behoben. b/64413274

  • SQLite-WITH-Abfragen werden jetzt mit [LiveData] unterstützt. [ref-LiveData] b/62510164

  • Es wurde ein Fehler behoben, bei dem InvalidationTracker nicht die richtige Liste sendet, wenn mehr als 1 Tabelle beobachtet wurde. b/65099281

  • Es wurde ein Fehler behoben, bei dem Room unter Windows verschiedene Dateien generiert hat. b/64470691

  • LifecycleObservers im Root-Paket werden jetzt unterstützt. b/62310817

1.0.0 Alpha 9 – 16. August 2017

Fehlerkorrekturen

  • Es wurde ein Fehler in LiveData behoben, bei dem der zweite Observer ignoriert wurde, wenn der erste aus der onChanged-Methode entfernt wurde. b/64285805

1.0.0 Alpha 8 – 1. August 2017

Änderungen des Verhaltens

  • Die Einschränkung NOT NULL wird für Spalten mit einfachen Typen oder Spalten hinzugefügt, die mit NonNull annotiert sind. Dadurch ändert sich die Struktur Ihrer Tabellen. Wenn Sie also bereits Architekturkomponenten der Alpha-Version 7 oder niedriger verwenden, müssen Sie eine Migration implementieren, wenn Sie die Daten behalten möchten, oder die Methode fallbackToDestructiveMigration() im Builder verwenden. b/62007004

API-Änderungen

1.0.0 Alpha 7 – 26. Juli 2017

Fehlerkorrekturen

  • Ein kritischer Fehler in der removeObserver-Methode von LifecycleRegistry wurde behoben, der eine LifecycleObserver-Lesedition unterbrochen hat.

  • Ungültiger InvalidationTracker für benutzerdefinierte Datenbanken b/63162311 korrigiert

1.0.0 Alpha 6 – 25. Juli 2017

Änderungen des Verhaltens

  • Die Reihenfolge der LifecycleObserver-Aufrufe wurde geändert. Bisher wurden Beobachter immer in der Reihenfolge ihres Hinzufügens aufgerufen: Wenn observer1 vor observer2 hinzugefügt wird, empfängt sie ON_CREATE und alle anderen Ereignisse vor observer2. Dies gilt nicht mehr für Zerstörungsereignisse, da für sie Beobachter in der umgekehrten Reihenfolge der Addition aufgerufen werden. Das aktuelle Verhalten lautet also: Wenn observer1 vor observer2 hinzugefügt wird, wird ON_CREATE zuerst an observer1 und dann an observer2 gesendet (das gleiche gilt für ON_START und ON_RESUME), aber das ON_PAUSE-Ereignis wird zuerst an observer2 und dann an observer1 gesendet (gleiches bei ON_STOP und ON_DESTROY).

  • Room gibt eine Ausnahme aus, wenn die Migration fehlt. Früher hat Room die Datenbank nur gelöscht, aber jetzt stürzt sie ab. Entwickler können dem Löschvorgang zustimmen, indem sie die Builder API aufrufen. b/63872392

API-Änderungen

  • Die Methode fallbackToDestructiveMigration() wurde zu RoomDatabase.Builder hinzugefügt, um die Datenbank zu löschen, wenn die Migration fehlt. b/63872392

  • Architekturkomponenten hängen jetzt von der Supportbibliothek 26.0.0 ab

Fehlerkorrekturen

  • Die Verarbeitung von @Relation, die in @Integrated verschachtelt ist, wurde korrigiert. b/63736065

  • Fehler beim Testen von Migrationen für Tabellen mit automatisch inkrementellem Primärschlüssel behoben. b/63393618

  • Jetzt erhalten @Queries, die DELETE- oder UPDATE-Abfragen ausführen, die Argumente korrekt. b/63872538

  • Jetzt werden ViewModels beibehalten, wenn sich das Inhaberfragment im Backstack befindet und die Konfigurationsänderung zweimal erfolgt. b/38445801

1.0.0 Alpha 5 – 18. Juli 2017

API-Änderungen

Sie müssen sich auf das Artefakt android.arch.persistence.room:rxjava2 verlassen, um RxJava-Unterstützung für Room hinzuzufügen.

Fehlerkorrekturen

  • @Delete-Abfragen ohne Parameter wurden korrigiert. b/63608092

  • Überprüfung der Zimmertypen auf Getter und Setter wurde korrigiert. b/63733651

1.0.0 Alpha 4 – 11. Juli 2017

API-Änderungen

  • Eine neue bequeme Methode (runInTransaction()) wurde zu RoomDatabase hinzugefügt.

  • Die Methoden @Insert, @Delete und @Update können jetzt Parameter von verschiedenen Entitätstypen haben. b/62682405

Fehlerkorrekturen

  • Die Verarbeitung von byte[] in @Dao-Methoden wurde korrigiert. b/62460045

  • Bei der Migrationsprüfung in Room wird jetzt der Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung verwendet. b/62875382

  • Die Proguard-Konfiguration für das Lebenszyklus-Artefakt wurde korrigiert. b/62113696

1.0.0 Alpha 3 – 15. Juni 2017

API-Änderungen

  • In @OnLifecycleEvent wird jetzt nur noch ein Ereignisparameter unterstützt. Dies ist eine Änderung in Vorbereitung auf die Java 8-Unterstützung, damit wir in Zukunft zu Schnittstellen mit Standardmethoden migrieren können. In Bezug auf diese Änderung können nur die mit @OnLifecycleEvent(ON_ANY) annotierten Methoden einen zweiten Parameter vom Typ Event empfangen (erster Parameter ist der LifecycleOwner). Weitere Informationen finden Sie in der Dokumentation zum Lebenszyklus.

  • Die Klassen LifecycleActivity und LifecycleFragment werden in das Artefakt android.arch.lifecycle:extensions verschoben.

  • MigrationTestHelper empfängt die Instrumentation-Instanz anstelle der Context, um das Schema aus den Testassets lesen und die Datenbank im Anwendungskontext erstellen zu können.

  • Die Anmerkungen @Insert, @Delete und @Update in @DAO-Methoden können jetzt Iterable als Parametertyp haben. b/62259820

Fehlerkorrekturen

  • Überschriebene Methoden mit Lebenszyklus-Ereignissen werden nicht mehr mehrfach aufgerufen.

  • Mehrere IN-Parameter werden jetzt ordnungsgemäß verarbeitet. b/62608681

  • Abstrakte DAO-Klassen können jetzt einen Konstruktor haben, der die @Database-Instanz empfängt. b/38488747

  • DAO können jetzt eine übergeordnete Klasse/Schnittstelle mit Typparametern haben. b/62103620

1.0.0 Alpha 2 – 2. Juni 2017

API-Änderungen

Fehlerkorrekturen

  • Proguard-Dateien für Lebenszyklen (b/62113696)
  • Datenverlust bei Typkonvertern (b/62100716)
  • Rückgabe von Long[] aus @Insert-Abfragen zulassen.

1.0.0 Alpha 1 – 17. Mai 2017

MinSDK:14

Allgemeine Hinweise

  • Vor der Einführung haben wir zwar viele Tests durchgeführt, aber Architekturkomponenten befinden sich derzeit in der Alphaphase. Wenn Sie eine Produktions-App erstellen, beachten Sie, dass sich die API vor Version 1.0 ändert und möglicherweise nicht vollständig robust ist. Wenn Sie mit der Fehlerbehebung in von Ihnen verwendeten Bibliotheken nicht vertraut sind, empfehlen wir, es zuerst mit Architekturkomponenten in Nebenprojekten zu versuchen.

  • Wir raten davon ab, alle Nutzer heute zu migrieren. Wir stellen Ihnen einen Migrationsleitfaden für die Version 1.0 der Architekturkomponenten zur Verfügung.

Bekannte Einschränkungen und Probleme