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ängigkeit1.1.1
anstelle von1.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
Navigation
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
MenuItem
s mitmenuCategory="secondary"
lösen den Backstack nicht mehr aus, wenn sie mitNavigationUI
-Methoden verwendet werden. b/120104424- Mit
AppBarConfiguration
können Sie jetzt eineOnNavigateUpListener
-Fallback-Instanz festlegen, die aufgerufen wird, wennnavController.navigateUp()
false
zurückgibt. b/79993862 b/120690961
Wichtige Änderungen
- Wenn ein
<argument>
mit einemargType="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 densetup
-Methoden entsprechen. Fügen SiemenuCategory="secondary"
zuMenuItem
hinzu, damit der Back-Stack nicht überschritten wird. aosp/852869- Die
fromBundle()
-Methoden generierterArgs
-Klassen verwenden jetzt eine Nicht-Null-Bundle
anstelle einerBundle
-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 vonListenableWorker
verschoben. Dadurch werden Refaktorierungskonflikte mit derResult
-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 vonListenableWorker
verschoben.
6. Dezember 2018
Seitenumbruch
Die Paginierung 2.1.0-rc01
wird ohne Änderungen gegenüber 2.1.0-beta01
freigegeben.
Navigation
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 derandroid: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 inOnDestinationChangedListener
b/118670572 umbenannt.OnDestinationChangedListener
übergibt jetzt auch dasBundle
der Argumente aosp/837142.- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen Methoden wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm des Diagramms, um alle Ziele aus dem Back-Stack zu entfernen. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet die Möglichkeit, beliebigeIntent.FLAG_ACTIVITY_
-Flags aosp/828140 festzulegen.NavController.onHandleDeepLink
wurde inhandleDeepLink
aosp/836063 umbenannt.- Viele Klassen und Methoden, die nicht für Unterklassen vorgesehen sind, wie
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden infinal
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 einFragmentFactory
zu delegieren. b/119054429 - Im Konstruktor für
NavGraphNavigator
wird keinContext
aosp/835340 mehr benötigt. - NavigatorProvider ist jetzt eine Klasse und keine Schnittstelle. Die Funktionalität des von
getNavigatorProvider()
zurückgegebenenNavigatorProvider
-Objekts hat sich nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt. Rufen Sie stattdessennavigate()
imNavigator
auf. aosp/830663- Erhebliche Refaktorierung von
Navigator
, wodurchOnNavigatorNavigatedListener
nicht mehr benötigt wird und stattdessennavigate
die aufgerufeneNavDestination
zurückgibt. Navigator
-Instanzen können keine Pop-Ereignisse mehr an dieNavController
senden. Sie können einOnBackPressedCallback
verwenden, um das Drücken der Zurück-Schaltfläche abzufangen undnavController.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 vontoString()
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
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, derSingle<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
inResult
kombiniert.Result
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten. IhreListenableFuture
s ergeben jetztResult
stattPayload
.Worker
s haben keine Getter- und Setter-Methoden für die AusgabeData
. Das ist eine funktionsgefährdende Änderung.Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
undConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
sowie Varianten wurden hinzugefügt, um langsam auslösende Inhalts-URIs besser zu unterstützen. b/119919774WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
Variante wurde hinzugefügt. Für diese Methode ist API 26 erforderlich.- Die Kotlin-Erweiterungsmethoden
Operation.await()
undListenableFuture.await()
wurden hinzugefügt. Operation.getException()
wurde inOperation.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
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mitArrays.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 vorhandenencombine
-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 überobserveForever
beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport einer Fehlerbehebung für die Raumbibliothek. B/74477406Data.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ährendListenableWorker.onStopped()
einWorkInfo
mit demCANCELLED
State
zurück. null
-Result
s inListenableWorker
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
inResult
kombiniert.Result
ist jetzt eine „versiegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten. IhreListenableFuture
s ergeben jetztResult
stattPayload
.Worker
s haben keine Getter- und Setter-Methoden für die AusgabeData
.- Die Kotlin-Erweiterungsmethoden
Operation.await()
undListenableFuture.await()
wurden hinzugefügt. Operation.getException()
wurde inOperation.getThrowable()
umbenannt.- Die Klasse
ContentUriTriggers
und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen varargs-Methoden aus
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Zur Behebung von Build-Problemen können Sie Ihre vorhandenen Varargs mitArrays.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 vorhandenencombine
-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 inFtsOptions
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 jetztListenableFuture
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 einesIN
-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 neuesCoroutineWorker
eingeführt. WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechenden Varianten der MethodegetStatus
wurden in die entsprechenden VariantengetWorkInfo
umbenannt. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde. Diese Unterscheidung wird vonWorkManager
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()
undWorkerParameters.getTriggeredContentAuthorities()
haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStartWork()
wurde inListenableWorker.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()
undConfiguration.getMinJobSchedulerID()
werden inConfiguration.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 eindeutigeOneTimeWorkRequest
s in die Warteschlange zu stellen, ohne eineWorkContinuation
erstellen zu müssen. - Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen neuenOperation
-Typ zurück. Das ist eine funktionsgefährdende Änderung. - Alle Varianten von
enqueue
akzeptieren keine Varargs fürWorkRequest
s mehr. Das ist eine funktionsgefährdende Änderung. Verwende stattdessen Sammlungen. Sie könnenArrays.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 zuinitialize
, führt dies nun zu einemIllegalStateException
. Das ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builder
-Elemente imwork-runtime-ktx
-Artefakt verwenden jetztListenableWorker
-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 inWorkInfo
umbenannt. Alle entsprechenden Varianten der MethodegetStatus
wurden in die entsprechenden VariantengetWorkInfo
umbenannt.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde. Diese Unterscheidung wird vonWorkManager
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()
undWorkerParameters.getTriggeredContentAuthorities()
haben zuvor Arrays zurückgegeben. Jetzt geben diese Methoden Collections zurück.ListenableWorker.onStartWork()
wurde inListenableWorker.startWork()
umbenannt.- Der Konstruktor für
WorkStatus
ist nicht mehr Teil der öffentlichen API. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
werden inConfiguration.getMinJobSchedulerId()
bzw.Configuration.getMaxJobSchedulerId()
umbenannt.- Alle Varianten der Methoden
enqueue
undcancel
fürWorkManager
geben jetzt einen neuenOperation
-Typ zurück. - Alle Varianten von
enqueue
akzeptieren keine Varargs fürWorkRequest
s mehr. - Wenn Sie versuchen,
WorkManager
mehrmals pro Vorgang zuinitialize
, führt dies nun zu einemIllegalStateException
.
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
Navigation
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 innavigation-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ürPagedList.Config.Builder
hinzugefügt.androidx.paging.PagedList()
wurde als Kotlin-Alternative fürPagedList.Builder
hinzugefügt.DataSourceFactory.toLiveData()
wurde als Kotlin-Alternative fürLivePagedListBuilder
hinzugefügt.DataSourceFactory.toObservable()
undtoFlowable()
wurden als Kotlin-Alternativen fürRxPagedListBuilder
hinzugefügt.AsyncPagedListDiffer.addPagedListListener()
zum Anhören hinzugefügt, wenn PagedList ausgetauscht wird. b/111698609PagedListAdapter.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 jetztIndexOutOfBoundsException
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 derWorker
-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt, der jetzt ein eingeblendeter öffentlicher Kurs ist und verwendet werden kann.ListenableWorker
bietet Zugriff auf die abstrakte MethodeListenableFuture<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 dieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
s werden imFutures
-Paket inalpha02
bereitgestellt (siehe unten im AbschnittWorkManager
).Worker
erweitertListenableWorker
und funktioniert weiterhin wie zuvor mit der abstraktenResult doWork()
-Methode.- Einige Methoden und Mitglieder wurden von
Worker
inListenableWorker
zufällig angeordnet. - Wir werden bald Referenzimplementierungen für
ListenableWorker
s bereitstellen, die Kotlin-Koroutinen (nach Veröffentlichung der stabilen Versionen) und RxJava2 verwenden.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. Die Implementierung sorgt dafür, dass das reflexionsbasierte Standardverhalten als letzte Maßnahme für alle von Nutzern erstelltenWorkerFactory
-Instanzen aufgerufen wird. Das ist eine funktionsgefährdende Änderung. WorkManager.synchronous()
undWorkContinuation.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
ListenableFuture
s synchron abrufen und beobachten. Beispielsweise wird mitWorkManager.enqueue()
frühervoid
zurückgegeben; jetzt wird einListenableFuture<Void>
zurückgegeben. Sie könnenListenableFuture.addListener(Runnable, Executor)
oderListenableFuture.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 vonFuture
.- Um die Gleichheit mit den synchronen
getStatus*
-Methoden zu wahren, haben wirListenableFuture
Varianten bereitgestellt und die vorhandenen Varianten, dieLiveData
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.
- Sie können jetzt mithilfe von
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 Sieexclude '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 ArbeitREPLACE
d war. b/116253486 und b/116677275 WorkContinuation.combine()
akzeptiert jetzt eine oder mehrereWorkContinuation
s statt zwei oder mehr. b/117266752
Wichtige API-Änderungen
- Alle zuvor
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere derWorker
-Standardkonstruktor. - Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. WorkManager.synchronous()
undWorkContinuation.synchronous()
wurden entfernt.WorkManager.getStatus*()
-Methoden geben jetztListenableFuture
s zurück.WorkManager.getStatus*LiveData()
gebenLiveData
s zurück.
Futures
Die Futures „1.0.0-alpha02
“ werden veröffentlicht.
API-Änderungen
- Entwickler können jetzt
ResolvableFuture
undAbstractResolvableFuture
als einfache konkrete Implementierungen vonListenableFuture
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ückgabetypenCompletable
,Single<T>
undMaybe<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 inRoomDatabase.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/62334005fallbackToDestructiveMigrationOnDowngrade
: Ist eine neue API inRoomDatabase.Builder
, die die Datenbank bei einem Downgrade automatisch neu erstellt. b/110416954ignoredColumns
: 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
undmDatabase
inRoomDatabase
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
Navigation
Die Navigation 1.0.0-alpha06
wurde mit Fehlerkorrekturen und API-Änderungen veröffentlicht.
Neue Funktionen
- Übergänge für gemeinsame Elemente für Fragment- und Aktivitätsziele werden jetzt unterstützt b/79665225. Weitere Informationen finden Sie unter Navigation mit der Navigationsarchitekturkomponente implementieren.
- Wenn Sie ein Element in
NavigationView
auswählen, werden alle Elemente am unteren Rand, die das Element b/112158843 enthalten, geschlossen
API-Änderungen
- Nicht funktionsgefährdende Änderung: Die
navigate()
-Methode des Navigators verwendet jetzt einenNavigator.Extras
-Parameter. - Die Methode
getGraph()
von NavController ist jetztNonNull
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 liegendeWorker
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 einenWorkerFactory
als Teil vonWorkManager.Configuration
an. Die Fallback-Factory istDefaultWorkerFactory
, was dem Verhalten vorheriger Versionen von WorkManager entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind jetzt als verworfen markiert. Verwenden Sie den neuen Konstruktor (Worker(Context, WorkerParameters)
) und rufen Siesuper(Context, WorkerParameters)
auf. In zukünftigen Versionen von WorkManager wird der Standardkonstruktor entfernt.
- Die Standardkonstruktoren für
- 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 kannNonBlockingWorker
auch wieder eingeblendet werden. - Möglichkeit zum Auslösen von geplanten Aufgaben in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
hinzugefügt. b/113360060
Wichtige Änderungen
- Die Standardkonstruktoren
Worker
undNonBlockingWorker
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 inJobScheduler
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
inConstraintTracker
behoben. b/112272753 - Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
anstelle von@NonNull
geändert. b/112275229
API-Änderungen
Worker
erweitert jetzt den neuen KursNonBlockingWorker
. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorker
zu einer vollständig unterstützten Entität für benutzerdefinierte Threading-Lösungen.- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
anstelle von@NonNull
geändert. b/112275229 - Kotlin-Erweiterungen:
Map.toWorkData()
wurde eingestellt undworkDataOf(vararg Pair<String, Any?>)
auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.
10. August 2018
Navigation
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
WorkRequest
s, wenn SieWorkRequest.Builder#build()
verwenden. b/111408337 - Aktiviert die Verwendung von
RescheduleReceiver
nur dann, wenn esWorkRequest
s 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 einIllegalStateException
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 WorkManagerLog.INFO
und höher. - Die Signatur von
Data.getString()
wurde geändert, sodass kein Standardwert mehr verwendet wird (entspricht implizitnull
). 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 derConstraints
-Konstruktor,Data.toByteArray()
undData.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
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
wurde korrigiert. b/110798652 - Es wurde ein Problem behoben, bei dem
PeriodicWorkRequest
s 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 angegebenenWorkRequest
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 (implizitnull
). - Einige Methoden, die nur für die interne Verwendung benötigt werden, wurden als
@hide
gekennzeichnet. Dazu gehören derConstraints
-Konstruktor,Data.toByteArray()
undData.fromByteArray(byte[])
.
July 19, 2018
Navigation
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 zuapp: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
Navigation
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 zusetDemoControllerIndex
b/79995048. - Beispiel:
action_show_settings
wird zuactionShowSettings
b/79642240
- Beispiel:
- 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()
undhashCode()
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 denenPagedListAdapter
undAsyncPagedListDiffer
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
undAsyncPagedListDiffer
Verschiebungsereignisse nicht signalisieren konnten. b/110711937
WorkManager
WorkManager 1.0.0-alpha04
wird veröffentlicht.
Fehlerkorrekturen
PeriodicWorkRequest
s werden jetzt korrekt neu geplant, wenn dieAlarmManager
-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
vonRoom
.
API-Änderungen
getStatusesSync()
wurde hinzugefügt, die synchrone Version vonWorkContinuation.getStatuses()
.Worker
kann zwischen einem vom Nutzer initiierten Abbruch und einem temporären vom Betriebssystem angeforderten Beenden unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn eine Haltestelle angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247Unterstü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 anJobScheduler
oderAlarmManager
gesendet werden können. So wird verhindert, dassWorkManager
alle verfügbarenJobScheduler
-Slots belegt.Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
wurde hinzugefügt, um einen Bereich vonJobScheduler
-Job-IDs zu definieren, die vonWorkManager
sicher verwendet werden können. b/79996760Worker.getRunAttemptCount()
gibt die aktuelle Anzahl der Ausführungen für eine bestimmteWorker
zurück. b/79716516Mit
WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
können Sie eindeutigePeriodicWorkRequest
s in die Warteschlange stellen. b/79600647WorkManager.cancelAllWork()
bricht alleWorker
-Vorgänge ab. Bibliotheken, die vonWorkManager
abhängig sind, können mithilfe vonWorkManager.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ürWorker
. Dadurch können SieWorkRequest
-Werte ohnetag
-Werte entfernen oder wennid
nicht verfügbar ist. b/109572351
Wichtige Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
verfügt jetzt über einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wennWorker
explizit abgebrochen wurde.
7. Juni 2018
Die Navigation „1.0.0-alpha02
“ wird freigegeben.
Navigation
Änderungen des Verhaltens
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Navigation jetzt URLDecodiert Argumente, die von Deeplinks-URLs geparst wurden. b/79982454
Fehlerkorrekturen
Ein
IllegalStateException
beim Aufrufen von Navigation über Fragment-Lebenszyklusmethoden wurde behoben. b/79632233Die 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/79656847Ein
StackOverflowError
bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
beim Zurückkehren zu einem verschachtelten Diagramm wurde behoben. b/80453447Ein Problem mit sich überschneidenden Fragmenten bei Verwendung von
launchSingleTop
wurde behoben. b/79407969Durch 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 inNavOptions
wurde eingestellt. b/80338878Das Attribut
launchDocument
für Aktionen und die zugehörige API inNavOptions
wurde eingestellt. b/109806636
24. Mai 2018
WorkManager 1.0.0-alpha02
wird veröffentlicht.
WorkManager
Fehlerkorrekturen
Problem mit
NullPointerException
fürState.isFinished()
behoben. b/79550068Ein Problem wurde behoben, durch das
Worker
s amApplication.onCreate()
verschoben wurden. B/79660657Es wurde ein Problem behoben, bei dem Sie mehr Arbeit planen konnten, als vom Betriebssystem zulässig ist. b/79497378
Bereinigung von Wakelocks, die mit
Worker
s 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
float
s inData
hinzugefügt. b/79443878Data.Builder.putAll()
gibt jetzt eine Instanz vonBuilder
zurück. b/79699162Weitere Javadoc und Fehlerbehebungen in der Dokumentation. b/79691663
API-Änderungen
Worker
können reagieren, wenn sie angehalten werden. MitWorker.isStopped()
kann geprüft werden, ob eineWorker
beendet wurde.Worker.onStopped()
kann für einfache Bereinigungsvorgänge verwendet werden.Die
Worker.getTags()
API gibt einSet
mit Tags zurück, die mitWorker
verknüpft sind.javax.time.Duration
-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s erfordern. Dieser Vorgang wird von@RequiresApi(26)
geschützt.WorkManager
Erweiterungen wurden aus demandroidx.work.ktx
-Paket in dasandroidx.work
-Paket verschoben. Die alten Erweiterungen wurden eingestellt und werden in einer zukünftigen Version entfernt.Configuration.withExecutor()
wurde verworfen. Verwende stattdessenConfiguration.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 Observable
s und Flowable
s erstellt werden können. Dabei werden Scheduler
s anstelle von Executor
s 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 neueandroid.arch.paging:rxjava2
-Artefakt hinzugefügt.
API-Änderungen
API-Änderungen, um die Rolle von Executors in Buildern zu verdeutlichen:
setBackgroundThreadExecutor()
wurde insetFetchExecutor()
umbenannt (inPagedList.Builder
undLivePagedListBuilder
)setMainThreadExecutor()
wurde inPagedList.Builder
insetNotifyExecutor()
umbenannt.
Der Status von
PagedList.mCallbacks
Mitglied wurde als privat gekennzeichnet.
Fehlerkorrekturen
LivePagedListBuilder
löst den erstenPagedList
-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, umDataSource.map
sowie das Laden vonPositionalDataSource
ohne Platzhalter zu implementieren) b/77237534
Zimmer
Fehlerkorrekturen
Es wurde ein kritischer Fehler in den Rx-Implementierungen
Single
undMaybe
des Raums behoben, bei dem die Abfrage im Voraus wiederverwendet wurde, was zu Problemen führte, wenn Sie den zurückgegebenenSingle
- oderMaybe
-Sofortwerten mehr als einen Beobachter hinzufügen. b/76031240RoomDatabase.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
- Basierend auf dem Feedback zur API-Überprüfung ist es in
@RawQuery
nicht mehr zulässig,String
als Abfrageparameter zu übergeben. Sie müssen SupportSQLiteQuery verwenden. Informationen zum Erstellen einer Instanz von SupportSQLiteQuery mit Argumentunterstützung finden Sie unter SimpleSQLiteQuery. - Die Methode fallbackToDeSTRUCTiveMigrationFrom von RoomDatabase.Builder akzeptiert jetzt
vararg int
anstelle vonvararg Integer
.
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 dieobservedEntities
-Property, solange das Pojo über seineEmbedded
-Felder oderRelation
s auf eine oder mehrere Entitäten verweist. b/74041772Paging: 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 undDataSource.LoadCallback
-Objekte sind jetzt abstrakt. So können Sie einenDataSource
umschließen oder einDataSource
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 einemDataSource
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).
- Mit
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 derLivePagedListProvider
. 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ürPositionalDataSource
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
undremoveObserver
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/63807999SupportSQLiteQuery
verfügt jetzt über einegetArgCount()
-Methode, die die Anzahl der Abfrageparameter zurückgibt. b/67038952
Fehlerkorrekturen
@RawQuery
wird jetzt korrekt für Paging-Abfragen unterstützt. b/72600425Die
Dao
-Klassen des Raums wurden jetzt korrekt benannt, um Namenskonflikte zu vermeiden, wenn zwei oder mehrDao
-Schnittstellen innere Klassen im selben Paket sind und denselben Namen haben. b/73536380Generische Feldtypen in
Pojo
werden ordnungsgemäß als Mitglied der Erweiterungsklasse geparst. b/73534868Abfrageparameter in
Dao
-Schnittstellen, die von Abhängigkeitsartefakten übernommen werden, werden jetzt ordnungsgemäß geparst. b/68118746Abfragen, die für
@Relation
s 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
undcom.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
aufAsyncListDiffer
.getItem(index)
/getItemCount()
wurden entfernt, zugunsten des Aufrufs vongetCurrentList().getItem(index)
undgetCurrentList().size()
, die expliziter sind.
- Alle Verweise von
ListAdapterConfig
aufAsyncDifferConfig
aktualisieren - Alle Verweise von
DiffCallback
aufDiffUtil.IttemCallback
aktualisieren - Alle Verweise von
PagedListAdapterHelper
aufAsyncPagedListDiffer
aktualisieren - Verweise von
setList()
aufsubmitList()
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 MethodesetJournalMode()
fürRoomDatabase.Builder
steuern. b/67757002Guava-Support: Room unterstützt jetzt die Rückgabe von Guava
Optional<T>
oderListenableFuture<T>
inDAO
-Abfragen. Wenn SieListenableFuture<T>
verwenden möchten, müssen Sie das Artefaktguava
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>
ausDAO
-Abfragen unterstützt.Schnittstellenmethoden mit Standardimplementierungen werden jetzt in
@Transaction
-Methoden inDAO
-Klassen unterstützt. Dies funktioniert sowohl fürJava 8
als auch fürKotlin
. b/72416735
Fehlerkorrekturen
Konstruktoren mit
@Relation
verursachen keinen Kompilierungsfehler, wenn ein anderer Konstruktor vorhanden ist, der verwendet werden kann. b/72884434Tabellennamen, die in
@Query
-Methoden mit'
maskiert sind, werden jetzt korrekt für den Entwertungs-Tracker maskiert. b/72366965Room 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/67181813Ein 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
undLifecycleFragment
wurden jetzt entfernt. VerwendeFragmentActivity
,AppCompatActivity
oder unterstütztFragment
. ViewModelProviders
undViewModelStores
wurden@NonNull
Anmerkungen hinzugefügt- Der
ViewModelProviders
-Konstruktor wurde verworfen – verwende die statischen Methoden direkt ViewModelProviders.DefaultFactory
wurde eingestellt – verwendeViewModelProvider.AndroidViewModelFactory
- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
wurde hinzugefügt, um eine statischeFactory
abzurufen, die zum Erstellen vonViewModel
- undAndroidViewModel
-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, empfangenfallBackToDestructiveMigrationsFrom
: Mit dieser neuen API inRoomDatabase.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 Seitenformatalpha-4
oder höher verwenden und vonLivePagedListProvider
zuLivePagedListBuilder
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
- Prüfen Sie Callback-Parameter nicht auf ungültige Datenquellen. b/70353706, b/70360195
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 inPositionalDataSource
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 inItemKeyedDataSource
umbenannt, um den Unterschied zu verdeutlichen.LivePagedListProvider
wird durchLivePagedListBuilder
undDataSource.Factory
ersetzt. Der Builder bietet die gleiche Funktion mit mehr Anpassungsmöglichkeiten und einfacheren Standardeinstellungen. Durch die Factory kann derDataSource
-Generierungscode unabhängig vonLiveData
bleiben.PagedList.BoundaryCallback
wurde für den Anwendungsfall „Datenbank und Netzwerk“ hinzugefügt.Der
PagedList.Builder
-Konstruktor verwendetDataSource
+PagedList.Config
, die jetztLivePagedListBuilder
ähneln, und ermöglicht den Diamant-Operator in der Sprache Java oder abgeleitete Typen in Kotlin.PagedList.getConfig()
wurde hinzugefügt undPagedList.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
- In
LiveDataReactiveStreams
wird jetzt die Spezifikation Reaktive Streams korrekt implementiert. b/67999342
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, wennonSaveInstanceState
aufgerufen wird (zuvor wurde es gerade alsCREATED
markiert, ohneON_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.
- Der Raum hängt jetzt vom neuesten xerialen Artefakt ab, das die
Lebenszyklen:
LiveData
funktioniert ordnungsgemäß, wenn die Aktivität teilweise von API < 24 abgedeckt ist. b/65665621OnLifecycleEvent
-Methoden in übergeordneten Klassen werden jetzt ordnungsgemäß aufgerufen oder während der Kompilierung wird eine Warnung ausgegeben, wenn dies nicht möglich ist. b/63474615Im 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ürLifecycle
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äß, wennLiveData
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/66525578Fü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 umInteger
oderLong
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
- Room gibt jetzt bei der Kompilierung einen Fehler aus, wenn das zurückgegebene Pojo in einer
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 Supportbibliothek26.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 Modulandroid.arch.lifecycle:common:1.0.1
hinzufügen, um das neue Artefaktcommon-java8
zu verwenden. Dieses Problem wird inbeta2
behoben.
- Aufgrund eines Fehlers in
Änderungen bei der Paketerstellung
android.arch.persistence.room.db
wurde zuandroid.arch.persistence.db
verschobenandroid.arch.persistence.room.db-impl
wurde verschoben und inandroid.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:
- API-Änderungen in der Datenbankkonfiguration. b/65349673 b/65499876
Seitenumbruch:
- Verbesserte Paging-Dokumentation mit mehr Beispielen und Thread-Annotationen.
Fehlerkorrekturen
- Raum:
- Mehrzeilige Kotlin-Strings in
@Query
-Methoden werden ordnungsgemäß verarbeitet. b/65809374
- Mehrzeilige Kotlin-Strings in
- 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
- Die folgenden Klassen wurden eingestellt und werden in einer zukünftigen Version entfernt:
Fehlerkorrekturen
Generierte Klassen werden jetzt mit
@Generated
annotiert, wenn die Anwendung die Annotation im Klassenpfad enthält. b/35754819Der Fehler beim Beobachtervergleich von MediatorLiveData wurde behoben. b/64413274
SQLite-
WITH
-Abfragen werden jetzt mit [LiveData] unterstützt. [ref-LiveData] b/62510164Es 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 MethodefallbackToDestructiveMigration()
im Builder verwenden. b/62007004
API-Änderungen
- SupportSQLiteProgram erweitert jetzt AutoCloseable. b/63131997
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
vorobserver2
hinzugefügt wird, empfängt sieON_CREATE
und alle anderen Ereignisse vorobserver2
. 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: Wennobserver1
vorobserver2
hinzugefügt wird, wirdON_CREATE
zuerst anobserver1
und dann anobserver2
gesendet (das gleiche gilt fürON_START
undON_RESUME
), aber dasON_PAUSE
-Ereignis wird zuerst anobserver2
und dann anobserver1
gesendet (gleiches beiON_STOP
undON_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 zuRoomDatabase.Builder
hinzugefügt, um die Datenbank zu löschen, wenn die Migration fehlt. b/63872392Architekturkomponenten 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
RoomDatabase.Builder
wurde eine neue Callback-Methode hinzugefügt, die beobachtet, wann eine Datenbank erstellt oder geöffnet wird. b/62699324@Query kann jetzt RxJava
Maybe
oderSingle
zurückgeben. b/62231019
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/62460045Bei 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 TypEvent
empfangen (erster Parameter ist derLifecycleOwner
). Weitere Informationen finden Sie in der Dokumentation zum Lebenszyklus.Die Klassen
LifecycleActivity
undLifecycleFragment
werden in das Artefaktandroid.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 jetztIterable
als Parametertyp haben. b/62259820
Fehlerkorrekturen
Überschriebene Methoden mit Lebenszyklus-Ereignissen werden nicht mehr mehrfach aufgerufen.
Mehrere
IN
-Parameter werden jetzt ordnungsgemäß verarbeitet. b/62608681Abstrakte DAO-Klassen können jetzt einen Konstruktor haben, der die
@Database
-Instanz empfängt. b/38488747DAO
können jetzt eine übergeordnete Klasse/Schnittstelle mit Typparametern haben. b/62103620
1.0.0 Alpha 2 – 2. Juni 2017
API-Änderungen
Der UngültigeationTracker-Callback empfängt jetzt die Liste der geänderten Tabellennamen. (b/38468740)
Die API-Oberfläche der Klasse SupportSQLiteDatabase wurde reduziert. (b/38481640)
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
- Im Lebenszyklus
Fragment
undActivityCompat
in der Supportbibliothek wurde dieLifecycleOwner
-Schnittstelle noch nicht implementiert. Dies geschieht, wenn Architekturkomponenten die Version 1.0.0 erreichen.