15. Januar 2019
WorkManager
WorkManager 1.0.0-beta02
wurde veröffentlicht. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Es wurde ein Grenzfall behoben, bei dem regelmäßige Arbeiten mehrmals pro Intervall ausgeführt werden konnten. auf Geräten mit Android 6.0 (API-Level 23). b/121998363
- Fehler behoben:
ConcurrentModificationException
auf Geräten mit Android 5.1 (API) Stufe 22) oder niedriger ist. b/121345393 - Die fehlerhafte Ausführung von Arbeiten, wenn die Einschränkungen auf Geräten nicht erfüllt wurden, wurde behoben. mit Android 5.1 (API-Level 22) oder niedriger. b/122578012
- Die Bearbeitung von Aufgaben wurde optimiert, um in einigen Grenzfällen schneller zu arbeiten. b/122358129
- Es wurde eine Änderung hinzugefügt, um potenzielle Race-Bedingungen zwischen mehreren Instanzen zu beheben.
von
LiveData
, die WorkManager verwendet. - Verschoben, um die
Room
-Abhängigkeit1.1.1
anstelle von1.1.1-rc01
zu verwenden. diese Versionen identisch sind. b/122578011
19. Dezember 2018
WorkManager
WorkManager 1.0.0-beta01
wurde veröffentlicht. Diese Version enthält keine API-Änderungen. Künftig bleibt WorkManager API bis zur nächsten Version stabil, sofern kein kritisches Problem auftritt. Diese Version enthält einige Fehlerkorrekturen.
Fehlerkorrekturen
- Zuvor stornierte untergeordnete Elemente von erfolgreich abgeschlossenen übergeordneten Aufgaben werden nicht mehr ausgeführt. b/120811767
- Korrekt initialisierte Logging-Klassen, die hauptsächlich während Tests angezeigt werden
18. Dezember 2018
Navigation
Die Navigation „1.0.0-alpha09
“ wurde veröffentlicht. Diese Version enthält wichtige API-Änderungen.
Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Wir haben uns entschlossen, die Weiterentwicklung des
android.arch.navigation:navigation-testing
Artefakt. Es hat sich zwar bewährt,
hilfreich für interne Tests von NavController
. Wir empfehlen dringend,
alternative Teststrategien, z. B. die Simulation der NavController
-Instanz
um zu überprüfen, ob die richtigen navigate()
-Aufrufe ausgeführt werden. Dieses
wird ausführlich in der
Single Activity Talk beim AndroidDevSummit 2018
Außerdem werden wir weitere Dokumente
zu Tests entwickeln,
mit Navigation.
Neue Funktionen
MenuItem
s mitmenuCategory="secondary"
werden nicht mehr als Antwort angezeigt. Stack in Verbindung mitNavigationUI
-Methoden. b/120104424- In
AppBarConfiguration
können Sie jetzt ein Fallback festlegenOnNavigateUpListener
-Instanz, die aufgerufen wird, wennnavController.navigateUp()
Folgendes zurückgibt:false
b/79993862 b/120690961
Nicht abwärtskompatible Änderungen
- Wenn ein
<argument>
mit einemargType="reference"
verwendet wird, wird die Navigation nicht mehr aktiviert. parst die Referenz und gibt stattdessen die Rohressourcen-ID selbst an. b/111736515 onNavDestinationSelected()
jetzt standardmäßig zum Startziel Ihrer Navigationsgrafik zurück, damit sie mit densetup
-Methoden konsistent sind. HinzufügenmenuCategory="secondary"
zu deinemMenuItem
, damit der Back-Stack nicht geplatzt wird. aosp/852869- Die
fromBundle()
-Methoden der generiertenArgs
-Klassen verwenden jetzt eine Nicht-Null-WerteBundle
anstelle einerBundle
, für die Nullwerte zulässig sind aosp/845616
Fehlerkorrekturen
- Argumente werden jetzt korrekt aus Deeplinks als die richtige
argType
geparst. statt immer als Zeichenfolgen, b/110273284 - Die Navigation exportiert ihre öffentlichen Ressourcen jetzt 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
wurde veröffentlicht. Diese Version enthält eine kleinere API-Änderung, die für einige Nutzer von Kotlin hilfreich ist.
API-Änderungen
androidx.work.Result
wurde zu einer inneren Klasse vonListenableWorker
verschoben. Dadurch werden Refaktorierungskonflikte mit der übergeordnetenResult
-Klasse von Kotlin vermieden. Dies ist eine funktionsgefährdende API-Änderung. b/120564418
Nicht abwärtskompatible API-Änderungen
androidx.work.Result
wurde zu einer inneren Klasse vonListenableWorker
verschoben.
6. Dezember 2018
Paging
Paging 2.1.0-rc01
wurde ohne Änderungen gegenüber 2.1.0-beta01
freigegeben.
Navigation
Die Navigation „1.0.0-alpha08
“ wurde veröffentlicht. Diese Version enthält wichtige API-Änderungen.
Weitere Informationen finden Sie unten im Abschnitt Nicht abwärtskompatible Änderungen.
Neue Funktionen
- Bei Verwendung mit
NavigationUI
-Methoden werden Ziellabels jetzt automatisch Ersetzen Sie{argName}
Instanzen inandroid:label
durch das richtige Argument b/80267266 - Die Navigation hängt jetzt von der Support Library 28.0.0 ab b/120293333
Nicht abwärtskompatible Änderungen
OnNavigatedListener
wurde inOnDestinationChangedListener
umbenannt. b/118670572OnDestinationChangedListener
übergibt jetzt auch dieBundle
von Argumenten. aosp/837142- Die Attribute
app:clearTask
undapp:launchDocument
sowie die zugehörigen zugehörigen wurden entfernt. Verwenden Sieapp:popUpTo
mit dem Stamm der Grafik, um entfernen Sie alle Ziele aus dem Back Stack. b/119628354 ActivityNavigator.Extras
verwendet jetzt einBuilder
-Muster und bietet folgende Möglichkeit:Intent.FLAG_ACTIVITY_
-Flags festlegen aosp/828140NavController.onHandleDeepLink
wurde inhandleDeepLink
umbenannt. aosp/836063- Viele Klassen und Methoden, die nicht für abgeleitete Klassen vorgesehen sind, z. B.:
NavOptions
,NavInflater
,NavDeepLinkBuilder
undAppBarConfiguration
, wurden alsfinal
festgelegt. aosp/835681 - Die verworfene Methode
NavHostFragment.setGraph()
wurde entfernt aosp/835684 - Die eingestellte Methode
NavigationUI.navigateUp(DrawerLayout, NavController)
wurde entfernt. aosp/835684 - Die Fragmenterstellung wurde in
FragmentNavigator
verschoben, um das Erstellen von Fragmenten zu erleichtern die Fragmenterstellung an eineFragmentFactory
delegieren. b/119054429 - Der Konstruktor für
NavGraphNavigator
nimmt keinenContext
mehr an aosp/835340 - NavigatorProvider ist jetzt
einer Klasse statt einer Benutzeroberfläche. Die
NavigatorProvider
, die vongetNavigatorProvider()
die Funktionsweise nicht geändert. aosp/830660 NavDestination.navigate()
wurde entfernt.navigate()
überNavigator
anrufen . aosp/830663- Erhebliche Refaktorierung von
Navigator
, wodurchOnNavigatorNavigatedListener
nicht mehr erforderlich ist Stattdessen gibtnavigate
dieNavDestination
zurück, zu der der Nutzer navigiert ist. Navigator
-Instanzen können keine Pop-Ereignisse mehr anNavController
senden. Erwägen Sie mitOnBackPressedCallback
, um Drücken der Schaltfläche „Zurück“ abfangen undnavController.popBackStack()
aufrufen. aosp/833716
Fehlerkorrekturen
popUpTo
funktioniert jetzt einheitlich, wenn das Ziel ein<navigation>
-Element ist b/116831650- Es wurden mehrere Fehler behoben, die zu einem
IllegalArgumentException
führten. bei Verwendung verschachtelter Grafiken b/118713731 b/113611083 b/113346925 b/113305559 - Das Attribut
dataPattern
von<activity>
-Zielen wird jetzt mit Daten gefüllt Argumente aus Nicht-String-Argumenten durch Aufrufen vontoString()
b/120161365
Sichere Argumente
- Sichere Args unterstützt serialisierbare Objekte, einschließlich Enum-Werten. Enum-Typen
kann mit dem enum-Literal ohne den Klassennamen einen Standardwert festlegen.
(z.B.
app:defaultValue="READ"
) b/111316353 - Sichere Args unterstützt Arrays aller unterstützten Typen b/111487504
- Sichere Args ignoriert jetzt Unterordner von Ressourcenverzeichnissen. b/117893516
- Safe Args fügt gegebenenfalls
@Override
-Annotationen hinzu b/117145301
5. Dezember 2018
WorkManager
WorkManager 1.0.0-alpha12
wurde veröffentlicht. Diese Version enthält einige wichtige API-Änderungen. Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen. Diese Version wird wahrscheinlich als erste Betaversion veröffentlicht. alpha12
enthält auch umfangreiche Aktualisierungen der Dokumentation.
API-Änderungen
- Mit dem neuen Artefakt
work-rxjava2
wirdRxWorker
eingeführt. Dies ist einListenableWorker
, das eineSingle<Payload>
erwartet. - Firebase JobDispatcher wird nicht mehr unterstützt, da es demnächst eingestellt wird. Das bedeutet, dass das Artefakt „
work-firebase
“ im Laufe der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „siegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten können. IhreListenableFuture
-Ergebnisse ergeben jetztResult
stattPayload
.Worker
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 das langsame Auslösen von 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
ContentUriTriggers
-Klasse und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. Das ist eine funktionsgefährdende Änderung. - Die restlichen varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen varargs mitArrays.asList(...)
zusammenfassen. Wir fügen immer noch Versionen jeder Methode mit einem Argument hinzu. Das ist eine funktionsgefährdende Änderung. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es wurde 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 bei der Wiederherstellung nach dem Beenden eines Prozesses einer bereits laufenden Aufgabe.
LiveData
, das überobserveForever
beobachtet wird, wird über WorkManager erfasst. Dies ist ein Backport-Problem einer Korrektur der Raumbibliothek. b/74477406Data.Builder.build()
löst jetzt eine Ausnahme aus, wenn das serialisierte Objekt seine maximale Größe überschreitet. Dies ist bisher nur in einem Hintergrundthread der Fall, wenn Sie ihn nicht richtig verarbeiten konnten.- Weitere Unterscheidung zwischen angehaltenen und stornierten Arbeiten
getWorkInfoById()
gibt während desListenableWorker.onStopped()
eineWorkInfo
mit derCANCELLED
State
zurück. null
Result
s als Fehler inListenableWorker
behandeln. b/120362353- Spekulative Fehlerbehebung für Shield Tablets mit API 24, die manchmal eine
IllegalArgumentException
auslöste. b/119484416
Nicht abwärtskompatible API-Änderungen
- Firebase JobDispatcher wird nicht mehr unterstützt, da es demnächst eingestellt wird. Das bedeutet, dass das Artefakt „
work-firebase
“ im Laufe der Betaphase nicht mehr aktualisiert wird. Wir arbeiten daran, in Zukunft eine Alternative hinzuzufügen. Payload
inResult
kombiniert.Result
ist jetzt eine „siegelte Klasse“ mit drei konkreten Implementierungen, die Sie überResult.success()
(oderResult.success(Data)
),Result.failure()
(oderResult.failure(Data)
) undResult.retry()
erhalten können. IhreListenableFuture
-Ergebnisse ergeben jetztResult
stattPayload
.Worker
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
ContentUriTriggers
-Klasse und die Methoden, die darauf verweisen, sind nicht mehr öffentlich verfügbar. - Die restlichen varargs-Methoden in
WorkManager
,WorkContinuation
undOneTimeWorkRequest
wurden entfernt, um die API zu optimieren. Um Build-Probleme zu beheben, können Sie Ihre vorhandenen varargs mitArrays.asList(...)
zusammenfassen. Wir fügen immer noch Versionen jeder Methode mit einem Argument hinzu. WorkContinuation.combine(OneTimeWorkRequest, *)
Varianten wurden entfernt. Es wurde eine verwirrende API präsentiert. Die vorhandenencombine
-Methoden sind verständlicher.
4. Dezember 2018
Zimmer
Raum 2.1.0-alpha03
wurde mit Unterstützung für Koroutinen und mehreren Fehlerkorrekturen freigegeben.
API-Änderungen
- Für den FTS
tokenizer
in@Fts3
/@Fts4
wird jetzt ein String anstelle einer Enum verwendet. Dadurch können benutzerdefinierte Tokenizer von Room verwendet werden. Integrierte Tokenizer sind inFtsOptions
weiterhin als Stringkonstanten definiert. b/119234881
Neue Funktionen
- Couroutinen: DAO-Methoden können jetzt Sperrenfunktionen sein. Zur Unterstützung von Sperrungsfunktionen in Room wurde ein neues Artefakt veröffentlicht:
room-coroutines
. b/69474692 - DAO-Methoden, die mit
@Insert
,@Delete
oder@Update
gekennzeichnet sind, unterstützen jetztListenableFuture
als Rückgabetyp. b/119418331
Fehlerkorrekturen
- Ein Fehler wurde behoben, bei dem Room fälschlicherweise versucht, einen Konstruktor mit Spalten in der
ignoredColumns
-Eigenschaft von@Entity
zu finden. b/119830714 - Es wurde ein Fehler behoben, bei dem Room DAO-Methodenparameter in der generierten Implementierung nicht als endgültig markiert hat. b/118015483
- Es wurde ein Fehler behoben, bei dem der Room-Prozessor abstürzte, wenn bei einer Abfrage mit Sonderzeichen ein Fehler gemeldet wurde. b/119520136
- Ein Fehler wurde behoben, bei dem Room andere
Collection
-Implementierungen als Argumente einesIN
-Ausdrucks ablehnte. b/119884035 - Es wurde ein Fehler behoben, bei dem von Room zurückgegebene LiveData-Daten automatisch bereinigt wurden, sodass keine neuen Daten mehr ausgegeben wurden. b/74477406
- Die Schließsperre von
RoomDatabase
wurde aktualisiert, um Sperrenkonflikte zu reduzieren. b/117900450
8. Nov. 2018
WorkManager
WorkManager 1.0.0-alpha11
wurde veröffentlicht. Diese Version enthält viele Änderungen, die zur stabilen API unter beta
werden.
In dieser Version gibt es wichtige API-Änderungen: Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen.
API-Änderungen
- Mit
work-runtime-ktx
wird eine neueCoroutineWorker
eingeführt. WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendegetWorkInfo
Varianten. Das ist eine funktionsgefährdende Änderung.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde.WorkManager
macht diese Unterscheidung nicht mehr möglich. Das ist eine funktionsgefährdende Änderung.- Paket „
androidx.work.test
“ wurde in 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 Sammlungen 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
gehört nicht mehr zur öffentlichen API. Das ist eine funktionsgefährdende Änderung. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
umbenannt bzw.Configuration.getMaxJobSchedulerId()
. Das ist eine funktionsgefährdende Änderung.- Der öffentlichen API wurden viele
@NonNull
-Annotationen 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 mehr als einmal versuchen,
WorkManager
pro Prozess zuinitialize
, führt dies jetzt zu einemIllegalStateException
. Das ist eine funktionsgefährdende Änderung.
Fehlerkorrekturen
WorkRequest.Builder
s im Artefaktwork-runtime-ktx
verwenden jetztListenableWorker
s. Damit wird b/117666259 behoben.- Die nächste Ausführungszeit für
PeriodicWork
muss in der Zukunft liegen. Damit wird b/118204399 behoben. - Entfernen Sie potenzielle Laufwerks-E/A-Vorgänge, wenn beim Start der App WorkManager verwendet wird. Damit wird b/117796731 behoben.
- Eine Race-Bedingung in
WorkConstraintsTracker
wurde korrigiert. Damit wird android-workmanager/issues/56 behoben.
Nicht abwärtskompatible API-Änderungen
WorkStatus
wurde inWorkInfo
umbenannt. Alle entsprechendengetStatus
-Methodenvarianten wurden in die entsprechendegetWorkInfo
Varianten.ListenableWorker.onStopped()
akzeptiert kein boolesches Argument mehr, das angibt, obWorkRequest
abgebrochen wurde.WorkManager
macht diese Unterscheidung nicht mehr möglich.- Paket „
androidx.work.test
“ wurde in 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 Sammlungen zurück.ListenableWorker.onStartWork()
wurde inListenableWorker.startWork()
umbenannt.- Der Konstruktor für
WorkStatus
gehört nicht mehr zur öffentlichen API. Configuration.getMaxJobSchedulerID()
undConfiguration.getMinJobSchedulerID()
wurden inConfiguration.getMinJobSchedulerId()
umbenannt bzw.Configuration.getMaxJobSchedulerId()
.- 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 mehr als einmal versuchen,
WorkManager
pro Prozess zuinitialize
, führt dies jetzt zu einemIllegalStateException
.
1. November 2018
Paging
Paging 2.1.0-beta01
wurde 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 eine
@DatabaseView
in einer@Relation
wurde hinzugefügt. b/117680932
Fehlerkorrekturen
- Es wurde ein Fehler behoben, bei dem Room Laufwerks-E/A im Hauptthread ausgeführt wurden, wenn ein Rx-Rückgabetyp abonniert und entfernt wurde. b/117201279
- Es wurde ein Fehler behoben, bei dem Room für ein Feld in einer Kotlin-Entitätsklasse keinen geeigneten Typkonverter finden konnte. b/111404868
- Ein Fehler wurde behoben, bei dem Room falschen Code für eine
DAO
-Schnittstellenimplementierung generiert hat, die eine Kotlin-Standardmethode ohne Argumente enthielt. b/117527454 - Der SQLite-Grammatikparser von Room wurde aktualisiert. Es wurde ein Leistungsproblem behoben, das zu langen Build-Zeiten führen würde. b/117401230
29. Oktober 2018
Navigation
Navigation 1.0.0-alpha07
wurde mit Fehlerkorrekturen und API-Änderungen veröffentlicht.
Neue Funktionen
- Eine neue AppBarConfiguration können Sie festlegen, welche Ziele als oberste Ebene betrachtet werden sollen. Ziele. Aktualisierte Dokumentation . b/117333663
- Sie können jetzt Argumente an das Startziel Ihrer Grafik übergeben. b/110300470
- In Deeplinks werden jetzt benutzerdefinierte Schemas mit Punkten, Bindestrichen und Pluszeichen unterstützt. b/112806402
Nicht abwärtskompatible Änderungen
- Das
navigation-testing-ktx
-Modul ist in dennavigation-testing artifact
und wird nicht mehr veröffentlicht. - Das Artefakt
navigation-testing
ist jetzt vom Kotlin-Standard abhängig Bibliothek. Die API wurde geändert, um sie mit Kotlin konsistenter zu gestalten aber Sie können ihn weiterhin für Tests verwenden, die in Java geschrieben sind. - In Metadatenmanifesten registrierte Navigationsdiagramme werden nicht mehr unterstützt. b/118355937
- Aktionen können nicht mehr mit <activity> verknüpft werden. Ziele. aosp/785539
Fehlerkorrekturen
- In Deeplinks werden Suchparameter jetzt korrekt geparst. b/110057514
- Bei Aktivitätszielen werden jetzt alle Animationen zum Ein- und Ausblenden korrekt angewendet. b/117145284
- Absturz behoben, der nach Konfigurationsänderungen bei der Verwendung von benutzerdefinierten Navigatoren. b/110763345
Sichere Argumente
- Sichere Argumente haben jetzt eine feste Abhängigkeit vom Android-Gradle-Plug-in 3.2.1. b/113167627
- Es können jetzt Routen für innere Klassen generiert werden. b/117407555
- Ein Problem beim Generieren von Routen zu einem <include>-Element wurde behoben. Diagramm. b/116542123
12. Oktober 2018
Paging
Paging 2.1.0-alpha01
wurde mit zwei großen Ergänzungen veröffentlicht: Page Dropping und KTX-Erweiterungsbibliotheken für jedes Artefakt. Außerdem wurden mehrere andere API-Änderungen und Fehlerkorrekturen vorgenommen.
API-Änderungen
PagedList.Config.Builder.setMaxSize()
zur Begrenzung der Anzahl der geladenen Elemente im Arbeitsspeicher 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()
als Kotlin-Alternativen fürRxPagedListBuilder
hinzugefügtAsyncPagedListDiffer.addPagedListListener()
wurde hinzugefügt, um zu prüfen, ob „PagedList“ ausgetauscht wird. b/111698609PagedListAdapter.onCurrentListChanged()
Variante wurde hinzugefügt, die die alte und die neue Liste übergibt. Die vorherige Variante wurde eingestellt.- Es wurden
PagedListAdapter/AsyncPagedListDiffer.submitList()
-Varianten hinzugefügt, die einen zusätzlichen Callback verwenden, der nach dem Differenzieren ausgelöst wird, wenn die Paged-Liste angezeigt wird. Auf diese Weise können Sie einen PagedList-Austausch mit anderen Aktualisierungen der Benutzeroberfläche synchronisieren. b/73781068 PagedList.getLoadedCount()
wurde hinzugefügt, damit du weißt, wie viele Elemente sich im Arbeitsspeicher befinden. Der Rückgabewert ist immer gleich.size()
, wenn Platzhalter deaktiviert sind.
Fehlerkorrekturen
- Es wurde eine Race-Bedingung behoben, die auftrat, wenn Listen unterschiedlich wiederverwendet werden b/111591017.
PagedList.loadAround()
gibt jetztIndexOutOfBoundsException
aus, wenn der Index ungültig ist. Zuvor konnte sie mit einer unklaren anderen Ausnahme abstürzen.- Problem behoben, bei dem eine extrem kleine anfängliche Ladegröße zusammen mit unveränderten Daten dazu führte, dass kein weiteres Laden von b/113122599 erfolgte.
11. Oktober 2018
WorkManager
WorkManager 1.0.0-alpha10
wird mit Unterstützung für entwicklergesteuerte asynchrone Arbeit veröffentlicht. In dieser Version gibt es wichtige API-Änderungen: Weitere Informationen finden Sie unten im Abschnitt funktionsgefährdende API-Änderungen.
Wir gehen davon aus, dass sich WorkManager in der letzten Phase der Alphaphase befindet. Wir erwarten, dass die API in der Betaversion stabil sein wird. Bitte nehmen Sie sich die Zeit, um uns Feedback über unseren Issue Tracker zu senden.
API-Änderungen
- Alle vorherigen
deprecated
-Methoden und -Klassen wurden entfernt, insbesondere derWorker
-Standardkonstruktor. Dies ist eine funktionsgefährdende API-Änderung. NonBlockingWorker
wurde inListenableWorker
umbenannt. Diese Klasse ist jetzt eine eingeblendete öffentliche Klasse und kann verwendet werden.ListenableWorker
bietet Zugriff auf eine 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 SieListenableFuture
entsprechend aktualisieren. Referenzimplementierungen vonListenableFuture
sind im PaketFutures
inalpha02
enthalten (siehe AbschnittWorkManager
).Worker
erweitertListenableWorker
und funktioniert weiterhin wie zuvor mit einer abstraktenResult doWork()
-Methode.- Einige Methoden und Mitglieder wurden von
Worker
zuListenableWorker
zufällig angeordnet. - Wir werden bald Referenzimplementierungen für
ListenableWorker
s bereitstellen, die Kotlin-Koroutinen verwenden (sobald die stabilen Versionen veröffentlicht werden) und RxJava2.
- Die Schnittstelle
WorkerFactory
und die konkrete ImplementierungDefaultWorkerFactory
wurden zu einer abstrakten Klasse namensWorkerFactory
zusammengeführt. Durch die Implementierung wird das auf der Reflexion basierende Standardverhalten für alle vom Nutzer erstelltenWorkerFactory
-Instanzen als letzte Aktion aufgerufen. Das ist eine funktionsgefährdende Änderung. WorkManager.synchronous()
undWorkContinuation.synchronous()
sowie alle zugehörigen Methoden wurden entfernt.ListenableFuture<Void>
wurde als Rückgabetyp vieler Methoden in der API hinzugefügt. Dies ist eine funktionsgefährdende API-Änderung.- Sie können jetzt mithilfe von
ListenableFuture
s synchron abrufen und beobachten. Beispiel:WorkManager.enqueue()
wurde verwendet, umvoid
zurückzugeben. wird jetztListenableFuture<Void>
zurückgegeben. Sie könnenListenableFuture.addListener(Runnable, Executor)
oderListenableFuture.get()
aufrufen, um Code auszuführen, sobald der Vorgang abgeschlossen ist. - Diese
ListenableFuture
s sagen nichts darüber aus, ob der Vorgang erfolgreich war oder fehlgeschlagen ist. dass sie auch fertig waren. Sie müssen trotzdem WorkManager-Methoden verketten, um diese Informationen zu erhalten. cancel()
-Aufrufe für diese Objekte werden ignoriert, da sie verwirrend und schwer zu verstehen sind. Brechen Sie den Vorgang oder die daraus resultierende Arbeit ab? Dies ist im Vertrag vonFuture
enthalten.- Um die Einheitlichkeit mit den synchronen
getStatus*
-Methoden zu wahren, haben wirListenableFuture
-Varianten bereitgestellt und die vorhandenen, dieLiveData
zurückgegeben haben, so umbenannt, dass sie explizit „LiveData“ enthalten. als Teil des Namens enthalten (z. B.getStatusesByIdLiveData(UUID)
). Dies ist eine funktionsgefährdende API-Änderung.
- Sie können jetzt mithilfe von
Fehlerkorrekturen
- Das bekannte Problem von alpha09 bezüglich doppelter
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 wurden hinzugefügt, um den neuen
Worker
-Konstruktor beizubehalten. b/116296569 - Potenzielle
NullPointerException
in einer Race-Bedingung beheben, bei der die ArbeitREPLACE
d war. b/116253486 und b/116677275 WorkContinuation.combine()
akzeptiert jetzt eine oder mehrereWorkContinuation
statt zwei oder mehr. b/117266752
Nicht abwärtskompatible API-Änderungen
- Alle vorherigen
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()
gibtLiveData
s zurück.
Futures
Future-Objekte: 1.0.0-alpha02
wird freigegeben.
API-Änderungen
- Entwickler können jetzt
ResolvableFuture
undAbstractResolvableFuture
als einfache konkrete Implementierungen vonListenableFuture
verwenden.
8. Oktober 2018
Zimmer
Raum „2.1.0-alpha01
“ wurde freigegeben.
Neue Funktionen
- FTS: Der Chatroom unterstützt jetzt Entitäten mit einer Zuordnungstabelle FTS3 oder FTS4. Mit
@Entity
annotierte Klassen können jetzt zusätzlich mit@Fts3
oder@Fts4
annotiert werden, um eine Klasse mit einer Zuordnungstabelle für die Volltextsuche zu deklarieren. FTS-Optionen für weitere Anpassungen 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. Hierzu wird die @DatabaseView-Annotation verwendet. b/67033276
- Automatischer Wert: Der Raum unterstützt jetzt die Deklaration von mit AutoValue gekennzeichneten Klassen als Entitäten und POJOs. Die Raumanmerkungen
@PrimaryKey
,@ColumnInfo
,@Embedded
und@Relation
können jetzt in den abstrakten Methoden einer Klasse mit automatischem Wert deklariert werden. Beachten Sie, dass diese Anmerkung auch durch@CopyAnnotations
ergänzt werden muss, damit sie von Room richtig verstanden werden. b/62408420 - Zusätzliche Unterstützung für Rx-Rückgabetypen: Mit
@Insert
,@Delete
oder@Update
gekennzeichnete DAO-Methoden unterstützen jetzt Rx-RückgabetypenCompletable
,Single<T>
undMaybe<T>
. b/63317956 - Unveränderliche Typen mit
@Relation
: Bisher waren für diesen Raum@Relation
-annotierte Felder erforderlich, die festgelegt werden konnten. Jetzt können sie aber auch Konstruktorparameter sein. enableMultiInstanceInvalidation
: Ist eine neue API inRoomDatabase.Builder
, die die Entwertung mehrerer Instanzen von RoomDatabase unter Verwendung derselben Datenbankdatei ermöglicht. Dieser Mechanismus zur Entwertung mehrerer Instanzen funktioniert auch über mehrere Prozesse hinweg. 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 für eine Entität zu ignorieren. b/63522075
API-/Verhaltensänderungen
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 von einer beschädigten Datenbank oder einer fehlerhaften Migration während der Initialisierung nicht ordnungsgemäß wiederhergestellt werden konnte. b/111504749 und b/111519144
- In Room wird jetzt der primäre Konstruktor von Kotlin in Datenklassen verwendet, sodass die Felder nicht als
vars
deklariert werden müssen. b/105769985
1. Oktober 2018
Raum „2.0.0
“ wurde ohne Änderungen gegenüber „2.0.0-rc01
“ freigegeben.
Paging 2.0.0
wurde mit einer einzigen Fehlerkorrektur veröffentlicht.
Paging
Fehlerkorrekturen
- Ein Absturz wurde behoben, der bei sehr schnellem Scrollen unter Verwendung von
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 veröffentlicht.
Lebenszyklus
Fehlerkorrekturen
- Eine ViewModel-Proguard-Regel wurde behoben, durch die Konstruktoren fälschlicherweise entfernt wurden b/112230489.
20. September 2018
Navigation
Navigation 1.0.0-alpha06
wurde mit Fehlerkorrekturen und API-Änderungen veröffentlicht.
Neue Funktionen
- Übergänge zwischen freigegebenen Elementen für Ziele von Fragment und Aktivität 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 jetzt alle Fenster am unteren Rand geschlossen: b/112158843
API-Änderungen
- Nicht abwärtskompatible Änderung: Die Navigator-Methode
navigate()
verwendet jetzt einenNavigator.Extras
-Parameter. - Die
getGraph()
-Methode von NavController ist jetztNonNull
b/112243286
Fehlerkorrekturen
NavigationUI.setupWithNavController()
gibt keine Aufrufe mehr frei, wenn er mit Aufrufen einzelner Ziele verwendet wird b/111961977- Navigator
onSaveState()
wird jetzt nur noch einmal aufgerufen b/112627079
Sichere Argumente
- Die „Directions“-Klassen für Navigationsziele erweitern jetzt die „Directions“-Klasse der übergeordneten Elemente, sofern vorhanden. b/79871405
- Directions- und Args-Klassen haben jetzt eine nützliche
toString()
-Implementierung b/111843389.
19. September 2018
WorkManager
WorkManager 1.0.0-alpha09
wurde mit Fehlerkorrekturen, Infrastrukturaktualisierungen und API-Änderungen veröffentlicht.
Bekanntes Problem
Wenn das Problem „Mehr als eine Datei mit betriebssystemunabhängigem Pfad ‚META-INF/proguard/androidx-annotations.pro‘ gefunden wurde“ auftritt, fügen Sie als vorübergehende Problemumgehung Folgendes in Ihre Gradle-Datei ein, während wir das Problem in Alpha 10 beheben:
Cool
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 „100 Jobs“ erforderlich war, wurde hinzugefügt. Fehler. b/115560696
- Es wurden einige Fehler bei Fremdschlüsseleinschränkungen aufgrund von Race-Bedingungen behoben. b/114705286
- Delegierte
ConstraintTrackingWorker.onStopped(boolean)
-Aufrufe an die zugrunde liegendeWorker
. b/114125093 - Erzwingen Sie die korrekte minimale Backoff-Verzögerung für Firebase JobDispatcher. b/113304626
- Verbesserte Threading-Garantien innerhalb der Bibliothek.
- Korrigieren Sie das potenzielle Problem bei der internen Deduplizierung von
LiveData
.
API-Änderungen
- Sie können jetzt zur Laufzeit eigene
Worker
-Instanzen erstellen. Geben Sie dazu eineWorkerFactory
als Teil derWorkManager.Configuration
an. Die Fallback-Factory istDefaultWorkerFactory
, was dem Verhalten vorheriger WorkManager-Versionen entspricht.- Die Standardkonstruktoren für
Worker
undNonBlockingWorker
sind jetzt als veraltet markiert. Verwende den neuen Konstruktor (Worker(Context, WorkerParameters)
) und rufesuper(Context, WorkerParameters)
auf. Bei zukünftigen WorkManager-Versionen wird der Standardkonstruktor entfernt.
- Die Standardkonstruktoren für
- Wir haben damit begonnen, das neue
ListenableFuture
-Artefakt intern zu verwenden (ohne Guava-Abhängigkeiten). In zukünftigen Releases werden wir ListenableFutures in die API einführen. Durch diese Änderung kannNonBlockingWorker
später wieder eingeblendet werden. - Funktion zum Auslösen von Aufgaben mit zeitlicher Festlegung in
TestDriver
überTestDriver.setInitialDelayMet(UUID)
undTestDriver.setPeriodDelayMet(UUID)
hinzufügen. b/113360060
Nicht abwärtskompatible Ä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
WorkManager 1.0.0-alpha08
wurde mit Fehlerkorrekturen veröffentlicht.
Fehlerkorrekturen
- WorkManager-Komponenten wurden ausdrücklich als nicht erkannter direkter Start gekennzeichnet, sodass sie beim direkten Start nicht ausgelöst werden. In Zukunft werden wir eine WorkManager-Version bereitstellen, die direkt bootfähig ist. b/112665532
- Es wurde ein Problem behoben, durch das wiederholte Aufgaben nicht ausgeführt wurden. b/112604021
- Regelmäßige Aufgaben, die nicht wiederholt ausgeführt wurden (im Zusammenhang mit dem oben genannten Problem), wurde behoben. b/112859683
- Die Backoff-Richtlinien wurden eingehalten, wenn der App-Prozess bereits ausgeführt wird.
- Ausnahmemeldungen in
Data
wurden korrigiert, um anzugeben, dass das Limit 10 KB beträgt. - Der Maximalwert von
Configuration.setMaxSchedulerLimit(int)
wurde auf 50 gesenkt, um eine gewisse Latenz bei der Verarbeitung vonJobScheduler
zu berücksichtigen. b/112817355
16. August 2018
WorkManager
WorkManager 1.0.0-alpha07
wurde mit Fehlerkorrekturen und kleineren API-Änderungen veröffentlicht.
Fehlerkorrekturen
- Eine potenzielle SQL-Abfrage mit negativen Grenzwerten, die eine unbegrenzte Anzahl von Ergebnissen zurückgeben konnte, wurde korrigiert.
- Arbeit, die bereits ausgeführt wurde, bricht nun korrekt alle ausstehenden Kopien dieser Arbeit in anderen Planern ab. Dadurch wurde das Limit von
JobScheduler
Jobs überschritten. b/111569265 ConcurrentModificationException
inConstraintTracker
korrigiert. b/112272753- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
statt in@NonNull
geändert. b/112275229
API-Änderungen
Worker
erweitert jetzt die neue KlasseNonBlockingWorker
. Dies hat keine Auswirkungen auf die aktuelle Nutzung. In Zukunft wirdNonBlockingWorker
zu einer vollständig unterstützten Entität für Lösungen für benutzerdefinierte Threading.- Die Rückgabetyp-Annotationen von
Data.getBooleanArray(String)
undData.getIntArray(String)
wurden in@Nullable
statt in@NonNull
geändert. b/112275229 - Kotlin-Erweiterungen: Wir haben
Map.toWorkData()
eingestellt und eineworkDataOf(vararg Pair<String, Any?>)
auf oberster Ebene hinzugefügt, um die Konsistenz mit vorhandenen APIs zu verbessern.
10. August 2018
Navigation
Navigation 1.0.0-alpha05
wurde mit Fehlerkorrekturen veröffentlicht.
Fehlerkorrekturen
- Es wurde ein Fehler behoben, der zu einem falschen Backstack-Verhalten führt. b/111907708
- Fehlerkorrektur in
equals()
der generierten Args-Klassen. b/111450897 - Build-Fehler in sicheren Args beheben. b/109409713
- Konvertierung von Ressourcenkennungen in Java-Namen korrigieren b/111602491
- Fehlermeldungen zur Null-Zulässigkeit im Plug-in „Safe Args“ wurden behoben.
- Fügen Sie fehlende Anmerkungen für die Null-Zulässigkeit hinzu.
6. August 2018
AndroidX-Versionen der Release-Versionen Lifecycle, Room und Paging 2.0.0-rc01
. Für alle Artefakte von 2.0.0-beta01
ändert sich nichts.
1. August 2018
WorkManager
WorkManager 1.0.0-alpha06
wurde mit Fehlerkorrekturen veröffentlicht.
Fehlerkorrekturen
- Verhindern Sie bei der Planung von Arbeiten eine Datenbanksperre. b/111801342
- Es wurde ein Fehler behoben, der dazu führte, dass
PeriodicWork
im Stromsparmodus nicht planmäßig ausgeführt wird. b/111469837 - Eine Race-Bedingung beim Verfolgen von Einschränkungen, die
WorkManager
zum Absturz führen, 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, wenn esWorkRequest
s gibt, die sie benötigen. b/111765853
24. Juli 2018
WorkManager
WorkManager 1.0.0-alpha05
wurde mit wichtigen Fehlerkorrekturen und Protokollierungsänderungen veröffentlicht.
API-Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt mit@Nullable
gekennzeichnet. Wenn das Singleton-Element bei manueller Initialisierung nicht richtig initialisiert wird, löst die Methode stattdessen einenIllegalStateException
aus. Dies ist ein funktionsgefährdende API-Änderung.- Die neue API
Configuration.Builder.setMinimumLoggingLevel(int)
wurde 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 so geändert, dass kein Standardwert mehr verwendet wird (implizit ist diesnull
). Dies ist eine funktionsgefährdende API-Änderung. - Einige Methoden, die nur für die interne Nutzung erforderlich sind, 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 bei bekannten Fällen der automatischen Sicherung keine Arbeit mehr aus. Dies könnte zu einem Absturz geführt haben. b/110564377
- Doppelte Planung von
PeriodicWorkRequest
s bei Verwendung vonJobScheduler
wurde behoben. b/110798652 - Es wurde ein Problem behoben, bei dem
PeriodicWorkRequest
s nach dem Stromsparmodus des Geräts nicht korrekt ausgeführt wurden. b/111469837 - Es wurde ein Problem mit anfänglichen Verzögerungen bei der Verwendung von Firebase JobDispatcher behoben. b/111141023
- Einige potenzielle Race-Bedingungen und Timing-Probleme wurden behoben.
BroadcastReceiver
s, die nicht mehr benötigt wurden, wurden korrekt freigegeben.- Die Leistung bei der Neuplanung wurde optimiert, wenn Apps nach dem erzwungenen Schließen neu gestartet werden.
TestScheduler.setAllConstraintsMet(UUID)
darf vor oder nach Einreihung der angegebenenWorkRequest
in die Warteschlange aufgerufen werden. b/111238024
Nicht abwärtskompatible Änderungen
WorkManager.getInstance()
ist jetzt mit@NonNull
statt mit@Nullable
gekennzeichnet.- Die Signatur von
Data.getString()
wurde so geändert, dass kein Standardwert mehr verwendet wird (implizit ist diesnull
). - Einige Methoden, die nur für die interne Nutzung erforderlich sind, 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 Gradle-Plug-in für sichere Args enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API-/Verhaltensänderungen
- NavHostFragment legt immer das aktuelle Fragment als primäres Navigationsfragment fest, um sicherzustellen, dass untergeordnete Fragmentmanager vor dem äußeren NavController-Element platziert werden. b/111345778
Sichere Argumente
- Nicht abwärtskompatible Ä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 sicheren Args sind jetzt anklickbar b/111534438
- Die Args-Klassen bestätigen jetzt, dass
NonNull
-Attribute tatsächlich nicht null sind. b/111451769 - Zusätzliche
NonNull
-Annotationen wurden den von NavDirections und Args generierten Klassen b/111455455 b/111455456 hinzugefügt.
Fehlerkorrekturen
- Ein Problem mit der Schaltfläche "Zurück" des Systems nach einem Deeplink zu einem Fragmentziel wurde behoben b/111515685.
12. Juli 2018
Navigation
Die Navigation 1.0.0-alpha03
und das zugehörige Gradle-Plug-in für sichere Args enthalten eine Reihe von API-Änderungen, Verhaltensänderungen und Fehlerkorrekturen.
API-/Verhaltensänderungen
- Eine NavigationUI.setupWithNavController-Methode für die Toolbar wurde hinzugefügt: b/109868820
- Die NavigationUI.setupWithNavController-Methode für "CollapsingToolbarLayout" wurde hinzugefügt: b/110887183
- popBackStack() gibt jetzt „false“ zurück, wenn der Back Stack leer ist oder die angegebene Ziel-ID sich nicht im Back Stack befindet. b/110893637
- FragmentNavigator ignoriert nun Navigationsvorgänge, nachdem FragmentManager den Status gespeichert hat, sodass die Ausnahmen "Diese Aktion kann nach onSaveInstanceState nicht ausgeführt werden können" vermieden werden b/110987825.
Sichere Argumente
- Nicht abwärtskompatible Änderung:Nicht alphanumerische Zeichen in Aktions- und Argumentnamen werden in den Namen der entsprechenden NavDirections-Methoden durch die Camel-Case-Schreibweise ersetzt.
<ph type="x-smartling-placeholder">
- </ph>
- Beispiel:
DemoController.index
wird zusetDemoControllerIndex
b/79995048 - Beispiel:
action_show_settings
wird zuactionShowSettings
b/79642240
- Beispiel:
- Nicht abwärtskompatible Ä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 parzellierbare Argumente zuzulassen. - Sie können jetzt
app:type="long"
mit Standardwerten im Format „123L“ verwenden. b/79563966 - Ab jetzt werden abparbare Argumente unterstützt, bei denen ein vollständig qualifizierter Klassenname für
app:type
verwendet wird. Der einzige unterstützte Standardwert ist"@null"
b/79563966 - Args-Klassen implementieren jetzt
equals()
undhashCode()
b/79642246 - Das Plug-in "Safe Args" kann jetzt auf Bibliotheksprojekte angewendet werden b/80036553
- Das Plug-in "Safe Args" kann jetzt auf Feature-Projekte angewendet werden b/110011752
Fehlerkorrekturen
- Probleme beim Navigieren während Fragment-Lebenszyklusmethoden b/109916080 behoben
- Probleme beim mehrmaligen Navigieren durch verschachtelte Grafiken behoben. b/110178671
- Probleme bei der Verwendung von
setPopUpTo
mit dem ersten Ziel im Diagramm b/109909461 behoben - Ein Problem wurde behoben, durch das alle
app:defaultValue
-Werte als Strings b/110710788 übergeben wurden. - Aapt2 im Paket mit Android-Gradle-Plug-in 3.2 Beta 01 fügt jetzt Keep-Regeln für jedes
android:name
-Attribut in den Navigations-XML-Dateien hinzu. b/79874119 - Ein Speicherleck wurde behoben, das beim Ersetzen des standardmäßigen FragmentNavigator b/110900142 aufgetreten ist.
2. Juli 2018
AndroidX-Versionen der Release-Versionen Lifecycle, Room und Paging 2.0.0-beta01
.
Lebenszyklus
Fehlerkorrekturen
- Die LifecycleObserver-Proguard-Regel wurde korrigiert, sodass nur Implementierungen und keine Subschnittstellen beibehalten werden. b/71389427
- Die ViewModel-Proguard-Regeln wurden korrigiert, um Verschleierung und Verkleinerung zu ermöglichen.
Zimmer
API-/Verhaltensänderungen
RoomDatabase.Builder.setQueryExecutor()
wurde hinzugefügt, um die Anpassung des Ausführungsorts von Abfragen zu ermöglichen- RxJava2-
Observable
-Unterstützung hinzugefügt - Generierte DAO- und Datenbankimplementierungen sind jetzt endgültig
Fehlerkorrekturen
- Klassen-/Feldnamen in „Getter für Feld nicht finden“ angeben Fehler b/73334503
- Die Abwärtskompatibilität von RoomOpenHelper mit älteren Versionen von Room b/110197391 wurde behoben.
Paging
Fehlerkorrekturen
- Problem behoben, bei dem Inhalte in einigen vorangestellten Fällen nicht mehr angezeigt wurden (Platzhalter deaktiviert, PositionalDataSource) b/80149146
- (Bereits in
1.0.1
veröffentlicht) Abstürze, bei denenPagedListAdapter
undAsyncPagedListDiffer
keine Verschiebungsereignisse signalisierten, wurden behoben. b/110711937
26. Juni 2018
Paging
Paging 1.0.1
wurde mit einer einzigen Fehlerkorrektur in runtime
veröffentlicht. Aus Gründen der Stabilität empfehlen wir dringend, 1.0.1
zu verwenden. Das Paging von RxJava2 1.0.1
wurde ebenfalls veröffentlicht und ist identisch mit 1.0.0-rc1
.
Fehlerkorrekturen
- Abstürze, bei denen
PagedListAdapter
undAsyncPagedListDiffer
keine Verschiebungsereignisse signalisiert haben, wurden behoben. b/110711937
WorkManager
WorkManager 1.0.0-alpha04
wurde veröffentlicht.
Fehlerkorrekturen
PeriodicWorkRequest
s werden jetzt korrekt neu geplant, wenn dieAlarmManager
-basierte Implementierung verwendet wird.Ein möglicher ANR-Fehler beim Verschieben aller Worker nach einem erzwungenen Beenden oder einem Neustart wurde behoben. b/110507716
Verschiedene WorkManager-APIs wurden um Anmerkungen zur Null-Zulässigkeit hinzugefügt. b/110344065
Nicht abgefangene 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 durchführen. b/74633270
Ein Migrationsabsturz beim Erstellen doppelter impliziter Tags wurde behoben. Dies ist ein sehr seltenes Problem, das nur aufgetreten ist, wenn Sie selbst dasselbe implizite Tag-Format verwendet haben.
19. Juni 2018
Zimmer
Raum „1.1.1
“ wurde freigegeben. Dieser Release ist mit Raum 1.1.1-rc1
identisch.
WorkManager
WorkManager 1.0.0-alpha03
wurde veröffentlicht.
Fehlerkorrekturen
Eine Race-Bedingung in der
AlarmManager
-basierten Implementierung wurde behoben. b/80346526.Doppelte Jobs bei Verwendung von
JobScheduler
nach einem Geräteneustart wurden behoben.Jobs mit Inhalts-URI-Triggern bleiben jetzt auch nach einem Neustart bestehen. b/80234744
Aktualisierungen der Dokumentation b/109827628, b/109758949, b/80230748
Ein Absturz beim erneuten Einreihen einer
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
Room
-Version1.1.1-rc1
.
API-Änderungen
getStatusesSync()
, die synchrone Version vonWorkContinuation.getStatuses()
, wurde hinzugefügt.Worker
kann zwischen einer vom Nutzer initiierten Kündigung und einer vorübergehenden vom Betriebssystem angeforderten Beendigung unterscheiden.Worker.isStopped()
gibttrue
zurück, wenn eine Art von Stopp angefordert wurde.Worker.isCancelled()
gibttrue
zurück, wenn die Arbeit explizit abgebrochen wurde. b/79632247Unterstützung für JobParameters#getNetwork() auf API 28 hinzugefügt. Dies wird über
Worker.getNetwork()
bereitgestellt.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, mit dem ein Bereich vonJobScheduler
-Job-IDs definiert werden kann, die fürWorkManager
sicher sind. b/79996760Worker.getRunAttemptCount()
gibt die aktuelle Anzahl von 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
s ab. Bibliotheken, die vonWorkManager
abhängig sind, können abfragen, wann diese Methode zuletzt aufgerufen wurde. Dazu wirdWorkManager.getLastCancelAllTimeMillis()
zur zusätzlichen Bereinigung des internen Status verwendet.WorkManager.pruneWork()
wurde hinzugefügt, um abgeschlossene Jobs aus der internen Datenbank zu entfernen. b/79950952, b/109710758
Änderungen im Verhalten
- Es wurde ein implizites Tag für alle
WorkRequest
hinzugefügt. Dies ist der vollständig qualifizierte Klassenname für dieWorker
. Dadurch können SieWorkRequest
s ohnetag
s entfernen oder wennid
nicht verfügbar ist. b/109572351
Nicht abwärtskompatible Änderungen
Worker.WorkerResult
wurde inWorker.Result
umbenannt.Worker.onStopped
hat jetzt einen zusätzlichenisCancelled
-Parameter, der auftrue
gesetzt wird, wennWorker
explizit abgebrochen wurde.
7. Juni 2018
Die Navigation „1.0.0-alpha02
“ wurde veröffentlicht.
Navigation
Änderungen im Verhalten
FragmentNavigator
verwendet jetztsetReorderingAllowed(true)
. b/109826220Navigation URLDecodiert jetzt Argumente, die von Deeplinks-URLs geparst wurden. b/79982454
Fehlerkorrekturen
Ein
IllegalStateException
-Fehler beim Aufrufen von Navigation von Fragment-Lebenszyklusmethoden wurde behoben. b/79632233Die Navigation hängt jetzt von der Support Library 27.1.1 ab, um Flackern bei der Verwendung von Animationen zu beheben. b/80160903
Problem mit
IllegalArgumentException
bei Verwendung von "defaultNavHost="true" behoben als untergeordnetes Fragment. b/79656847Ein
StackOverflowError
bei Verwendung von NavDeepLinkBuilder wurde behoben. b/109653065Ein
IllegalArgumentException
beim Zurückkehren zu einer verschachtelten Grafik wurde behoben. b/80453447Ein Problem mit überlappenden Fragmenten bei Verwendung von
launchSingleTop
wurde behoben. b/79407969Die Navigation erstellt jetzt den richtigen synthetischen Back-Stack für verschachtelte Grafiken. b/79734195
NavigationUI hebt jetzt das richtige Element hervor, 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
wurde veröffentlicht.
WorkManager
Fehlerkorrekturen
NullPointerException
inState.isFinished()
behoben. b/79550068Es wurde ein Problem behoben, durch das
Worker
s aufApplication.onCreate()
verschoben wurden. b/79660657Es wurde ein Problem behoben, bei dem Sie mehr Arbeiten planen konnten, als vom Betriebssystem zugelassen sind. b/79497378
Die Bereinigung von Wakelocks, die mit
Worker
s verknüpft sind, wurde in den Hintergrundthread verschoben.Die
AlarmManager
-Implementierung wird jetzt korrekt bereinigt, wenn alle ausstehenden Arbeiten abgeschlossen sind.Bereinigungs-SQL-Abfragen, die nicht englische Sprachen betrafen, wurden 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-Funktionen und Fehlerbehebungen finden Sie in der Dokumentation. b/79691663
API-Änderungen
Worker
können reagieren, wenn sie angehalten wurden. MitWorker.isStopped()
kann geprüft werden, ob eineWorker
angehalten wurde. MitWorker.onStopped()
können einfache Bereinigungsvorgänge ausgeführt werden.Die
Worker.getTags()
API gibt eineSet
von Tags zurück, die mitWorker
verknüpft sind.javax.time.Duration
-Überlastungen für APIs hinzugefügt, die eine Kombination aus Dauer undTimeUnit
s nehmen. Dieser wird von@RequiresApi(26)
geschützt.WorkManager
Erweiterungen wurden aus dem Paket „androidx.work.ktx
“ in das Paket „androidx.work
“ verschoben. Die alten Erweiterungen werden nicht mehr unterstützt und in einer zukünftigen Version entfernt.Configuration.withExecutor()
wurde verworfen. Verwende stattdessenConfiguration.setExecutor()
.
16. Mai 2018
Paging von RxJava2 1.0.0-rc1
und Raum 1.1.1-rc1
wurden freigegeben. Wir sehr
empfehlen, bei Migrationen den Raum 1.1.1-rc1
statt 1.1.0
zu verwenden.
Zimmer
Ein Fehler wurde behoben, bei dem Room die Initialisierung der Migration nach der Migration nicht richtig verarbeitete b/79362399.
Paging
Paging rxjava2
wird auf Releasekandidat verschoben, ohne Änderungen gegenüber dem ersten
Alpha.
8. Mai 2018
Paging 1.0, Navigation and WorkManager Alphas, Room 1.1, AndroidX
Paging 1.0.0
und Raum 1.1.0
werden freigegeben.
mit Alphaversionen für zwei neue Architekturkomponenten: Navigation und WorkManager.
„Seitenumbruch“ und „Raum“ haben seit den letzten Releasekandidaten keine Änderungen gegeben.
Neue Bibliothek: Navigation
Die Navigation bietet ein Framework für In-App-Entwicklungen.
Navigation. Diese erste Version ist 1.0.0-alpha01
.
Neue Bibliothek: WorkManager
WorkManager vereinfacht die Planung und Ausführung von
garantierten und einschränkungssensitiven Hintergrundarbeit. Diese erste Version ist
1.0.0-alpha01
AndroidX
Architekturkomponenten werden in AndroidX integriert, darunter aktualisierte
Paketnamen, Artefaktnamen und Abhängigkeiten von anderen AndroidX-Bibliotheken.
Diese werden unter Version 2.0.0-alpha1
veröffentlicht und können gemeinsam mit anderen
AndroidX-Bibliotheken
Kotlin-Erweiterungen
ViewModel, ReactiveStreams und Sqlite (früher „Database“-Komponente von Room) Im Rahmen des AndroidX-Alpharelease wurden Kotlin-Erweiterungsbibliotheken hinzugefügt. In Navigation und WorkManager enthalten -ktx-Module. Jede dieser Optionen Erweiterungsmodule finden Sie unter Komponenten hinzufügen.
2. Mai 2018
- Raum 1.1.0-Releasekandidat
- Raum „
1.1.0-rc1
“ wurde freigegeben.
Fehlerkorrekturen
- Der Chatroom ist jetzt mit Kotlin
1.2.40
kompatibel. b/78328708
19. April 2018
Versionskandidaten für Seitenumbruch
Seitenumbruch 1.0.0-rc1
und Raum 1.1.0-beta3
werden freigegeben.
Paging
Es sind keine weiteren bekannten Probleme oder neuen Funktionen geplant für den
Paging 1.0.0
-Release. Führen Sie ein Upgrade Ihrer Projekte durch, um 1.0.0-rc1
zu verwenden und
hilf uns beim Kampftest, damit wir einen steinharten 1.0.0
versenden können.
In diesem Release gibt es keine Änderungen. Er ist mit 1.0.0-beta1
identisch.
Zimmer
Fehlerkorrekturen
- Kompilierungsfehler beheben, wenn ein Kotlin-POJO auf eine Beziehungsentität verweist, die wurde in Java definiert: b/78199923
5. April 2018
Raum 1.1.0-beta2
, Paging 1.0.0-beta1
und Paging RxJava 1.0.0-alpha1
wurden veröffentlicht.
Paging ist für kurze Zeit in der Betaphase, bevor der Kandidaten freigegeben wird.
Wir planen keine weiteren API-Änderungen für Paging 1.0
und die Messlatte für API-Änderungen sind sehr hoch.
Alpha RxJava2-Unterstützung für Paging wird als separates optionales Modul veröffentlicht (android.arch.paging:rxjava2:1.0.0-alpha1
)
und wird vorübergehend separat versioniert, bis sich dies stabilisiert.
Diese neue Bibliothek bietet eine RxJava2-Alternative zu LivePagedListBuilder
, mit der Sie
Observable
und Flowable
mit Scheduler
statt Executor
:
Kotlin
val pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable()
Java
Observable<PagedList<Item>> pagedItems = RxPagedListBuilder(myDataSource, /* page size */ 50) .setFetchScheduler(myNetworkScheduler) .buildObservable();
Paging
Neue Funktionen
RxPagedListBuilder
wird über das neue Artefaktandroid.arch.paging:rxjava2
hinzugefügt.
API-Änderungen
API-Änderungen zur Verdeutlichung der Rolle von Executors in Buildern:
setBackgroundThreadExecutor()
wurde insetFetchExecutor()
umbenannt (inPagedList.Builder
undLivePagedListBuilder
)setMainThreadExecutor()
wurde insetNotifyExecutor()
(inPagedList.Builder
) umbenannt.
PagedList.mCallbacks
Mitglied ist jetzt privat.
Fehlerkorrekturen
LivePagedListBuilder
löst den anfänglichenPagedList
-Ladevorgang für den angegebenen Executor aus statt des Arch Components IO-Thread-Pools.Das Verhalten bei der Entwertung in internen
DataSource
-Wrappern (zur Implementierung vonDataSource.map
, sowie durch Platzhalter deaktiviertesPositionalDataSource
Laden) b/77237534
Zimmer
Fehlerkorrekturen
Ein kritischer Fehler in den Implementierungen von Rx
Single
undMaybe
des Raums wurde behoben. würde die Abfrage vorzeitig wiederverwenden, was zu Problemen führt, wenn Sie mehr als 1 in die zurückgegebenenSingle
- oderMaybe
-Instanzen ein. b/76031240RoomDatabase.clearAllTables
VACUUM
legt die Datenbank nicht fest, wenn sie aufgerufen wird innerhalb einer Transaktion. b/77235565
21. März 2018
Raum 1.1.0-beta1
, Paging 1.0.0-alpha7
und Lebenszyklen 1.1.1
wurden freigegeben.
Zimmer
API-Änderungen
- Laut Feedback zur API-Überprüfung akzeptiert
@RawQuery
die Übergabe einerString
als Abfrageparameter nicht mehr. Sie müssen SupportSQLiteQuery verwenden. Wie Sie ganz einfach eine Instanz von SupportSQLiteQuery mit Argumentunterstützung erstellen, erfahren 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-Checkpoint festgelegt und die Datenbank
VACUUM
gesteuert wird.@RawQuery
akzeptiert jetzt jedes Pojo für dieobservedEntities
-Eigenschaft, sofern 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 aus mehreren Tabellen (wie 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
wurde von arch:runtime
nach arch:common
verschoben. Dadurch kann es ohne Laufzeitabhängigkeit verwendet werden, z.B. in paging:common
unten.
lifecycle:common
ist eine Abhängigkeit von lifecycle:runtime
. Diese Änderung wirkt sich also nicht direkt auf lifecycle:runtime
aus, sondern nur auf Module, die wie Paging direkt von lifecycle:common
abhängen.
Paging
Paging 1.0.0-alpha7
wird zusammen mit den Lebenszyklen 1.1.1
veröffentlicht. Da die Paginierung von Alpha7 von der oben genannten Verschiebung der Function
-Klasse abhängt, müssen Sie die lifecycle:runtime
-Abhängigkeit auf android.arch.lifecycle:runtime:1.1.1
aktualisieren.
Paging alpha7
wird voraussichtlich als letzte Version verfügbar sein, bevor die Funktion zur Paging-Funktion in der Betaversion verfügbar ist.
API-Änderungen
DataSource.LoadParams
-Objekte haben jetzt einen öffentlichen Konstruktor undDataSource.LoadCallback
-Objekte sind jetzt abstrakt. Dies ermöglicht das Wrapping einesDataSource
-Objekts oder das direkte Testen einesDataSource
-Objekts mit einem simulierten Callback. b/72600421- Mapper für DataSource und DataSource.Factory
<ph type="x-smartling-placeholder">
- </ph>
- Mit
map(Function<IN,OUT>)
können Sie Ergebnisse, die von einemDataSource
geladen wurden, transformieren, zusammenfassen oder dekorieren. mapByPage(<List<IN>,List<OUT>>)
aktiviert dasselbe für die Batchverarbeitung (z.B. wenn aus SQL geladene Elemente zusätzlich eine separate Datenbank abfragen müssen, was im Batch möglich ist).
- Mit
PagedList#getDataSource()
wurde als praktische Methode hinzugefügt b/72611341- Alle verworfenen Klassen wurden aus der API entfernt, einschließlich der Überreste des Pakets
recyclerview.extensions
und desLivePagedListProvider
. DataSource.Factory
wird von einer Schnittstelle in eine abstrakte Klasse geändert, um Kartenfunktionen zu aktivieren.
Fehlerkorrekturen
- Die Builder wurden zu endgültig geändert. b/70848565
- Die Implementierung des Raums
DataSource
wurde jetzt korrigiert, um Anfragen an mehrere Tabellen zu verarbeiten. Diese Korrektur ist in Raum 1.1.0-beta1 enthalten, siehe oben. - Es wurde ein Fehler behoben, bei dem
BoundaryCallback.onItemAtEndLoaded
fürPositionalDataSource
nicht aufgerufen wurde, wenn Platzhalter aktiviert und ist die Gesamtgröße genau ein Vielfaches der Seitengröße.
2. März 2018
Raum „1.1.0-alpha3
“ wurde freigegeben. Dies ist die letzte geplante Alphaversion für
Raum 1.1.0
.
API-Änderungen
addObserver
undremoveObserver
von UngültigkeitTracker -Methoden sind jetzt synchron und müssen in einem Nicht-UI-Thread aufgerufen werden. Dies verhindert einige Race-Bedingungen bei der Beobachtung von Tabellen.Für RoomDatabase gibt es eine neue
clearAllTables()
-Methode , die den gesamten Tabelleninhalt kürzt. b/63807999SupportSQLiteQuery
hat jetzt einegetArgCount()
-Methode, die die Zahl zurückgibt von Suchparametern. b/67038952
Fehlerkorrekturen
@RawQuery
wird jetzt ordnungsgemäß für Paging-Abfragen unterstützt. b/72600425Die generierten
Dao
-Klassen werden jetzt korrekt benannt, um Namenskonflikte zu vermeiden, wenn Zwei oder mehrDao
-Schnittstellen sind innere Klassen im selben Paket und haben die mit demselben Namen. b/73536380Allgemeine Feldtypen in
Pojo
s werden ordnungsgemäß als Mitglied der erweiterten . b/73534868Abfrageparameter in
Dao
-Schnittstellen, die von der Abhängigkeit übernommen werden Artefakte jetzt ordnungsgemäß geparst. b/68118746Bei Abfragen, die für
@Relation
s generiert wurden, wird nun ordnungsgemäß ein Escapezeichen für die Feldnamen verwendet. b/70925483
27. Februar 2018
Paging 1.0.0-alpha6
wird zusammen mit der Support Library-Version 27.1.0 veröffentlicht.
ListAdapter
und einige zugehörige Klassen wurden aus der Paging-Bibliothek direkt zu Recyclerview verschoben. Dies gilt auch für einige Umbenennungen, um die Funktion bestimmter Klassen klarer zu machen. Diese Alphaversion von Paging ist wahrscheinlich die letzte mit wesentlichen funktionsgefährdenden Änderungen an der API.
API-Änderungen
- In „recyclerview-v7“ verschobene Klassen:
<ph type="x-smartling-placeholder">
- </ph>
ListAdapter
- Die Klassen wurden umbenannt und in „recyclerview-v7“ verschoben:
<ph type="x-smartling-placeholder">
- </ph>
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- In „paging-runtime“ umbenannte Klassen:
<ph type="x-smartling-placeholder">
- </ph>
PagedListAdapterHelper
->AsyncPagedListDiffer
Die verschobenen Klassen waren unabhängig von der Paging Library neben RecyclerView nützlich. Das bedeutet, dass sie ohne Paging-Alphaversion verwendet werden können, aber auch bedeutet, 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 <ph type="x-smartling-placeholder">- </ph>
- Diese müssen gleichzeitig erfolgen, da ListAdapter von Paging nach RecyclerView verschoben wurde.
- Alle Verweise von
ListAdapterHelper
aufAsyncListDiffer
aktualisieren <ph type="x-smartling-placeholder">- </ph>
getItem(index)
/getItemCount()
wurde zugunsten des expliziteren MustersgetCurrentList().getItem(index)
undgetCurrentList().size()
entfernt.
- Alle Verweise von
ListAdapterConfig
aufAsyncDifferConfig
aktualisieren - Alle Verweise von
DiffCallback
aufDiffUtil.IttemCallback
aktualisieren - Alle Verweise von
PagedListAdapterHelper
aufAsyncPagedListDiffer
aktualisieren - Verweise von
setList()
aufsubmitList()
aktualisieren <ph type="x-smartling-placeholder">- </ph>
- umbenannt, um den asynchronen Charakter der Listenunterschiede zu verdeutlichen
Fehlerkorrekturen
- Das Übergeben einer falschen Anfangsposition an den anfänglichen Ladevorgang bei Platzhaltern wurde behoben. deaktiviert sind. b/73513780
15. Februar 2018
Raum „1.1.0-alpha2
“ wurde freigegeben.
Neue Funktionen
Room unterstützt jetzt das Öffnen einer Datenbank im Write-Ahead-Logging-Modus. In diesem Modus blockieren Ihre Schreibvorgänge nicht mehr Ihre Leseabfragen. Obwohl mehr Arbeitsspeicher verbraucht (aufgrund mehrerer Verbindungen). Dieser Modus ist normalerweise schneller. Standardmäßig verwendet Room WAL, wenn das Gerät mindestens
API 16
ist und es ist kein Gerät mit wenig Arbeitsspeicher. Sie können dieses Verhalten mithilfe der MethodesetJournalMode()
fürRoomDatabase.Builder
. b/67757002Guava-Support: In Chatrooms können jetzt Guava zurückgegeben werden.
Optional<T>
oderListenableFuture<T>
inDAO
-Abfragen. Wenn SieListenableFuture<T>
verwenden möchten, Du musstguava
Artefakt aus Chatroom importieren (android.arch.persistence.room:guava:1.1.0-alpha2
)Der Chatroom unterstützt jetzt die Rückgabe von
java.util.Optional<T>
ausDAO
Abfragen.Schnittstellenmethoden mit Standardimplementierungen werden jetzt in
@Transaction
-Methoden inDAO
-Klassen. Dies funktioniert sowohl fürJava 8
als auchKotlin
. b/72416735
Fehlerkorrekturen
Konstruktoren mit
@Relation
verursachen keinen Kompilierungsfehler, wenn einen weiteren Konstruktor, der verwendet werden kann. b/72884434Tabellennamen, die in den Methoden
@Query
mit'
maskiert wurden, werden jetzt korrekt maskiert. für den Entwertungs-Tracker. b/72366965In Room werden jetzt die Kotlin-Anmerkungen
@Metadata
verwendet, um die Klassenstruktur zu lesen während der Annotationsverarbeitung. Das heißt, selbst wenn ein Pojo von einem Abhängigkeit, können die Namen der Konstruktorparameter ordnungsgemäß gelesen werden. b/67181813Ein Problem mit der Suche nach Downgrade-Migrationspfaden wurde behoben. b/72153525
Nicht standardmäßige Spaltentypen werden jetzt bei der Migration von einer vorhandene Datenbank in Room um. b/71953987
Der Chatroom verarbeitet nun dauerhafte
boolean?
-Felder in Kotlin-Klassen nun korrekt. b/72786402
22. Januar 2018
Die Lebenszyklen 1.1.0
, Raum 1.1.0-alpha1
und Paging 1.0.0-alpha5
werden freigegeben.
Lebenszyklus 1.1.0
Änderungen an der Verpackung
Neue, viel kleinere Abhängigkeiten sind jetzt verfügbar:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
API-Änderungen
- Die veralteten
LifecycleActivity
undLifecycleFragment
wurden entfernt. Bitte verwenden SieFragmentActivity
,AppCompatActivity
oder unterstützenFragment
. @NonNull
Anmerkungen wurdenViewModelProviders
undViewModelStores
hinzugefügt- Der
ViewModelProviders
-Konstruktor wurde verworfen. Verwenden Sie bitte direkt seine statischen Methoden ViewModelProviders.DefaultFactory
wurde eingestellt – bitteViewModelProvider.AndroidViewModelFactory
verwenden- Die statische Methode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
wurde hinzugefügt, um eine statischeFactory
, die zum Erstellen vonViewModel
- undAndroidViewModel
-Instanzen geeignet ist.
Raum 1.1.0-alpha1
Neue Funktionen
RawQuery
: Diese neue API ermöglicht es@Dao
-Methoden, die SQL als Abfrageparameter zu empfangen. b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: Diese neue API inRoomDatabase.Builder
ermöglicht Detaillierte Kontrolle darüber, von welchen Startschemaversionen die destruktiven Migrationen ausgeführt werden zulässig (im Vergleich zu „fallbackToDestructiveMigration“) b/64989640- Room unterstützt jetzt nur neuere Paging APIs (Alpha-4+). Die eingestellten
LivePagedListProvider
Wenn Sie die neue Alphaversion von „Raum“ verwenden möchten, müssen Sie Paging verwendenalpha-4
oder höher und wechsle vonLivePagedListProvider
zuLivePagedListBuilder
, falls du das noch nicht getan hast.
Fehlerkorrekturen
- Verbesserte Unterstützung für Kotlin Kapt-Typen. b/69164099
- Die Reihenfolge der Felder macht das Schema nicht mehr entwerten. b/64290754
Paging 1.0.0-alpha5
Fehlerkorrekturen
- Fehler beim Laden von Seiten bei deaktivierten Platzhaltern beheben b/70573345
- Zusätzliches Logging zum Aufspüren des IllegalArgumentException-Fehlers b/70360195 (und spekulative Korrektur im Raum)
- Fehlerkorrekturen für den Javadoc-Beispielcode b/70411933 und b/71467637
11. Dezember 2017
Paging alpha4-1
wurde freigegeben. Dies ist eine kleine Fehlerbehebungsversion für Paging Alpha 4.
Fehlerkorrekturen
- Überprüfen Sie Callback-Parameter nicht auf ungültige Datenquellen. b/70353706 b/70360195
7. Dezember 2017
Paging alpha4
wurde mit erheblichen Änderungen und Ergänzungen veröffentlicht, hauptsächlich
die sich auf Netzwerk-, Netzwerk- und Datenbankanwendungsfälle konzentriert.
API-Änderungen
DataSource
ist jetzt eine asynchrone API, um das Paging direkt aus dem Netzwerk zu vereinfachen:- Ein einziger Einstiegspunkt für anfängliche Größe und Daten
- Unterstützt Wiederholungsversuche im Netzwerk, indem der Callback beibehalten und die Weiterleitung später erfolgt
- Threadsichere Callbacks ermöglichen asynchrones Laden zum Erstellen eines einzelnen Netzwerks
PagedList
im UI-Thread gesichert. - Klarer formuliertes Fehlerverhalten bei Parametern des anfänglichen Ladevorgangs
TiledDataSource
wurde inPositionalDataSource
umbenannt, um und die Tatsache, dass bei Platzhaltern deaktiviert.PageKeyedDataSource
wurde hinzugefügt, um das nächste/vorherige, in folgende Elemente eingebettete Token zu unterstützen wird die Netzwerkseite geladen.KeyedDataSource
wurde inItemKeyedDataSource
umbenannt, um Unterschied klar zu erkennen.LivePagedListBuilder
undDataSource.Factory
ersetzenLivePagedListProvider
Der Builder bietet die gleiche Funktionalität mit mehr und vereinfachte Standardeinstellungen. In der Werkseinstellung ist die GenerationDataSource
erlaubt um unabhängig vonLiveData
zu bleiben.PagedList.BoundaryCallback
wurde für den Anwendungsfall Datenbank und Netzwerk hinzugefügt.Der
PagedList.Builder
-Konstruktor übernimmt jetztDataSource
+PagedList.Config
ähnlich wieLivePagedListBuilder
und ermöglicht den Diamantoperator in Java oder abgeleitete Typen in Kotlin.PagedList.getConfig()
hinzugefügt undPagedList.Config
hat jetzt ein öffentliches Mitglied Eigenschaften.Für
KeyedDataSource.loadBefore()
sind keine umgekehrten Ergebnisse mehr zu erwarten.PagedListAdapter.onCurrentListChanged()
wurde hinzugefügt, um auf Updates zu warten, zu denen PagedList wird angezeigt.
Fehlerkorrekturen
- Fehler bezüglich IndexOutOfBoundsException in PagedListAdapter(Helper) b/67883658 behoben
1.0.0 bis 6. November 2017
Alle Hauptkomponenten (außer Paging) sind jetzt 1.0.0
. Das ist genau das Gleiche,
veröffentlicht als rc1
, bis auf eine Änderung an der reactivestreams
-Bibliothek.
Fehlerkorrekturen
LiveDataReactiveStreams
wurde jetzt korrekt implementiert der Spezifikation Reactive Streams. b/67999342
Releasekandidaten – 18. Oktober 2017
Alle wichtigen Artefakte (außer Paging) sind jetzt 1.0.0-rc1
.
Es sind keine weiteren bekannten Probleme oder neuen Funktionen geplant für den
1.0.0
Release. Bitte führen Sie ein Upgrade Ihrer Projekte zur Verwendung von 1.0.0-rc1
durch und helfen Sie uns.
um einen steinharten 1.0.0
zu versenden.
Verhaltensänderung
- Mit diesem Release wird
Lifecycle.Event#ON_STOP
jetzt ausgelöst, wennonSaveInstanceState
wird angerufen (zuvor war es gerade alsCREATED
markiert) ohne dassON_STOP
gesendet wird. Weitere Informationen dazu finden Sie in der Dokumentation zu Lebenszyklen
Fehlerkorrekturen
Raum:
- Der Raum ist jetzt vom neuesten xerialen Artefakt abhängig, das das
OutOfMemory
korrigiert Probleme während der Kompilierung. b/62473121 Query
-Methoden können jetzt mit@Transaction
annotiert werden. Weitere Informationen finden Sie in der Referenzdokumentation zu@Transaction
. b/65112315StringUtil
Kurs im Chatroom ist nicht öffentlich verfügbar API (sie war nie als öffentliche API vorgesehen).
- Der Raum ist jetzt vom neuesten xerialen Artefakt abhängig, das das
Lebenszyklen:
LiveData
funktioniert ordnungsgemäß, wenn Activity in der API teilweise abgedeckt ist < 24. b/65665621OnLifecycleEvent
-Methoden in übergeordneten Klassen werden jetzt ordnungsgemäß aufgerufen oder ein Wenn dies nicht möglich ist, wird während der Kompilierung eine Warnung ausgegeben. b/63474615Lebenszyklus beinhaltet jetzt
WeakReference
-Werte wieder in ihre LifecycleOwner vermeiden, LifecycleOwner, wenn der Lebenszyklus länger im Arbeitsspeicher gehalten wird als üblich. Dies ist nur eine Vorsichtsmaßnahme.Lifecycle
veröffentlichen).
9. Oktober 2017
Paging alpha-3
wird freigegeben. wodurch es mit dem beta 2
kompatibel ist.
von Lifecycles und Room.
Fehlerkorrekturen
- Verbesserte Paging-Dokumentation.
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
meldet sich jetzt korrekt von der Quelle ab Publisher, 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 handhabt Beobachter beim Abbestellen Abo-Erstellung. b/66337741
Das Artefakt
FullLifecycleObserver
für die Java 8-Sprache ist jetzt in der Abhängigkeitsstruktur verfügbar. b/66525578Fügen Sie Ihrer Proguard-Datei die folgenden Zeilen hinzu. (Dies ist nicht erforderlich, wenn Version 1.0.0 ausgeliefert wird.)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
Raum:
- Room gibt jetzt bei der Kompilierung einen Fehler aus, wenn das zurückgegebene Pojo in einem
Die Methode
@Query
hat ein Feld@NonNull
, das mit keiner der Spalten in der Abfrageantwort. Wenn das Feld@Nullable
ist, gilt nur „Raum“. gibt eine Warnung aus. b/67115337 - Room validiert jetzt Indexe in neueren Betriebssystemversionen. b/63132683
- Der Raum wählt standardmäßig no-arg-Konstruktor aus, wenn mehrere mit übereinstimmenden Konstruktoren in einem Pojo. b/67353427
- Einspaltige Primärschlüssel können
Nullable
sein, wenn es sich umInteger
oderLong
. b/67086876 - Der Entwertungstracker verarbeitet den erneuten Eintritt im Testmodus ordnungsgemäß. b/65471397
- Der Chatroom sucht jetzt nach ungültigen Zeichen in Spalte und Tabelle
Namen bei der Kompilierungszeit (ungültige Zeichen:
`
,"
). b/64749111
- Room gibt jetzt bei der Kompilierung einen Fehler aus, wenn das zurückgegebene Pojo in einem
Die Methode
21. September 2017
Mit diesem Release erreichen alle Module der Architekturkomponenten mindestens beta 1
außer der neuen Paging Library (alpha 2
).
Wir planen keine weiteren API-Änderungen. Ungeplante Änderungen können passieren,
Die Messlatte für API-Änderungen bis zum 1.0.0
(stabile Version) ist sehr hoch und wird unwahrscheinlich.
- Lebenszyklusaktivität und LifecycleFragment wird vor
1.0.0
(stabil) entfernt. Sie werden nicht benötigt, wenn Sie die Support Library26.1.0
oder höher verwenden.
Im Gegensatz zur Alpha-Phase ist die Betaphase nur für eine sehr kurze Dauer geplant.
Versionsänderungen
- Lebenszyklus-Erweiterungen und Raum sind jetzt
beta 1
- Paging ist jetzt
alpha 2
- Keine Änderungen bei Lebenszyklus (Laufzeit, häufig) und Arch Core (allgemein). Diese beiden 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 ein neue Schnittstelle namens DefaultLifecycleObserver welche hat Standardimplementierungen für alle Lebenszyklusmethoden. Wenn Sie die Programmiersprache Java 8 verwenden, sollten Sie dieses Artefakt statt Annotationen vorziehen.- Aufgrund eines Fehlers in
beta1
müssen Sie eine explizite Abhängigkeit für Modulandroid.arch.lifecycle:common:1.0.1
, um das neue Artefaktcommon-java8
zu verwenden. Dieses Problem wird inbeta2
behoben.
- Aufgrund eines Fehlers in
Änderungen an der Verpackung
- „
android.arch.persistence.room.db
“ wurde in „android.arch.persistence.db
“ verschoben android.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 keine Änderungen an Ihren Build-Dateien vornehmen müssen.
API-Änderungen
Raum:
- Die Annotation @ColumnInfo 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
annotiert.@Embedded
oder@Relation
. b/62600692- Primärschlüssel müssen mit
@NonNull
gekennzeichnet werden, sofern sie nicht automatisch generiert werden. b/64292391 <ph type="x-smartling-placeholder">- </ph>
- Für diese Änderung ist möglicherweise eine Schemamigration erforderlich. Für die Unannehmlichkeiten möchten wir uns entschuldigen.
- Eine neue Convenience-Anmerkung (@Transaction) wurde hinzugefügt,
überschreibt eine
DAO
-Methode und führt sie in einer Transaktion aus.
SQLite-Datenbank unterstützen:
- API-Änderungen in der Datenbankkonfiguration. b/65349673 b/65499876
Paging:
- Verbesserte Dokumentation zum Paging mit mehr Beispielen und Thread-Annotationen
Fehlerkorrekturen
- Raum:
<ph type="x-smartling-placeholder">
- </ph>
- Mehrzeilige Kotlin-Strings in
@Query
-Methoden werden ordnungsgemäß verarbeitet. b/65809374
- Mehrzeilige Kotlin-Strings in
- Paging:
<ph type="x-smartling-placeholder">
- </ph>
- Das Paging-Artefakt hängt nicht mehr von junit ab. b/65690261
1.0.0 Alpha 9-1 – 13. September 2017
Dies ist ein Hauptrelease, bei dem Artefakte des Kernlebenszyklus (Laufzeit, allgemein) und Arch Core (allgemein)
Zur stabilen Version 1.0.0
Im Zuge dieser Änderung ist die Support Library 26.1.0 jetzt von diesen Bibliotheken abhängig. Sowohl AppCompatActivity als auch Support-Fragment implementieren Sie jetzt die LifecycleOwner-Schnittstelle.
Dieser Release hängt auch von der Supportbibliothek 26.1.0
ab, um die neue Integration nutzen zu können.
Neue Bibliothek: Paging
Diese Version umfasst außerdem eine neue Bibliothek namens Paging, mit der sich große
Datensätze, falls erforderlich, in Blöcken in eine RecyclerView. Paging wird als alpha1
veröffentlicht.
und hat einen eigenen Veröffentlichungszyklus.
API-Änderungen
- Die folgenden Klassen wurden eingestellt und werden in einer zukünftigen Version entfernt: <ph type="x-smartling-placeholder">
Fehlerkorrekturen
Generierte Klassen werden jetzt mit
@Generated
annotiert, wenn die App die Annotation im Klassenpfad enthält. b/35754819Der Beobachter-Vergleichsfehler von MediatorLiveData wurde behoben. b/64413274
SQLite-Abfragen vom Typ
WITH
werden jetzt mit [LiveData] unterstützt. [ref-LiveData] b/62510164Es wurde ein Fehler behoben, bei dem InvalidationTracker bei mehr als einer Tabelle nicht die richtige Liste sendete. erfasst wird. b/65099281
Ein Fehler wurde behoben, bei dem Room unter Windows verschiedene Dateien generiert hat. b/64470691
LifecycleObservers werden jetzt im Stammpaket unterstützt. b/62310817
1.0.0 Alpha 9 – 16. August 2017
Fehlerkorrekturen
- Ein Fehler in LiveData wurde behoben, bei dem der zweite Observer ignoriert wurde, wenn der erste Observer aus der
onChanged
-Methode entfernt wurde. b/64285805
1.0.0 Alpha 8 – 1. August 2017
Änderungen im Verhalten
- Für Spalten mit primitiven Typen oder Spalten wurde die Einschränkung
NOT NULL
hinzugefügt annotiert mit NonNull. Dadurch ändert sich die Struktur Ihrer Wenn Sie bereits mit Architekturkomponenten Alpha 7 oder niedriger arbeiten, müssen Sie eine Migration implementieren, wenn Sie die Daten behalten oder die MethodefallbackToDestructiveMigration()
-Methode im Builder. b/62007004
API-Änderungen
- SupportSQLiteProgram erweitert AutoCloseable jetzt. b/63131997
1.0.0 Alpha 7 – 26. Juli 2017
Fehlerkorrekturen
Ein kritischer Fehler in der Methode
removeObserver
der LifecycleRegistry wurde behoben, der eine LifecycleObserver-Readdition unbrauchbar machte.InvalidationTracker für benutzerdefinierte Datenbanken korrigiert b/63162311
1.0.0 Alpha 6 – 25. Juli 2017
Verhaltensänderungen
Die Reihenfolge der LifecycleObserver-Aufrufe wurde geändert. Bisher wurden Beobachter immer in der Reihenfolge ihrer Hinzufügung aufgerufen: Wenn
observer1
vor demobserver2
hinzugefügt wird, erhält esON_CREATE
und alle anderen Ereignisse vor demobserver2
. Dies gilt nicht mehr für Zerstörungsereignisse, da Beobachter in umgekehrter Reihenfolge der Addition aufgerufen werden. Aktuelles Verhalten: Wennobserver1
vorobserver2
hinzugefügt wird, wirdON_CREATE
zuerst anobserver1
und dann anobserver2
gesendet (dies gilt fürON_START
undON_RESUME
), aber das EreignisON_PAUSE
wird zuerst anobserver2
und erst dann anobserver1
gesendet (gleiche fürON_STOP
undON_DESTROY
).Raum löst eine Ausnahme aus, wenn die Migration fehlt. Bisher hat Room die Datenbank nur gelöscht, aber jetzt stürzt die App ab. Entwickler können das Löschverhalten durch Aufrufen der Builder API aktivieren. b/63872392
API-Änderungen
Die Methode
fallbackToDestructiveMigration()
wurdeRoomDatabase.Builder
hinzugefügt zu die Datenbank löschen, wenn die Migration fehlt. b/63872392Architekturkomponenten hängen jetzt von der Support Library 26.0.0 ab
Fehlerkorrekturen
Die Verarbeitung von @Relation, die in @Embedded verschachtelt ist, wurde behoben. b/63736065
Fehler beim Testen der Migration für Tabellen mit automatisch erhöhtem Primärschlüssel wurden behoben. b/63393618
Jetzt erhalten @Abfragen, die DELETE- oder UPDATE-Abfragen ausführen, Argumente korrekt. b/63872538
ViewModels werden jetzt beibehalten, wenn sich das Eigentümerfragment im Backstack befindet und die Konfiguration zweimal geändert wird. b/38445801
1.0.0 Alpha 5 – 18. Juli 2017
API-Änderungen
Eine neue Callback-Methode wurde zu
RoomDatabase.Builder
hinzugefügt, um zu beobachten, 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/63608092Probleme bei der Prüfung des Raumtyps auf Getter und Setter wurden behoben. b/63733651
1.0.0 Alpha 4 – 11. Juli 2017
API-Änderungen
Eine neue praktische Methode (
runInTransaction()
) wurde zu RoomDatabase hinzugefügt.Die Methoden
@Insert
,@Delete
und@Update
können jetzt Parameter aus verschiedenen Entitätstypen haben. b/62682405
Fehlerkorrekturen
Die
byte[]
-Verarbeitung in@Dao
-Methoden wurde korrigiert. b/62460045Bei der Migrationsprüfung in Room wird jetzt nicht zwischen Groß- und Kleinschreibung unterschieden. b/62875382
Die Proguard-Konfiguration für das Lebenszyklusartefakt wurde korrigiert. b/62113696
1.0.0 Alpha 3 – 15. Juni 2017
API-Änderungen
In
@OnLifecycleEvent
wird derzeit nur ein Ereignisparameter unterstützt. Dies ist eine Änderung in Vorbereitung auf die Java 8-Unterstützung, damit wir zu zukünftig mit Standardmethoden. In Bezug auf diese Änderung Die mit@OnLifecycleEvent(ON_ANY)
annotierten Methoden können einen zweiten Parameter des Typs empfangenEvent
(erster Parameter istLifecycleOwner
). 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. statt der
Context
, um das Schema aus den Test-Assets zu lesen und die Datenbank im Anwendungskontext.Anmerkungen
@Insert
,@Delete
und@Update
in@DAO
können jetztIterable
als Parametertyp verwendet werden. b/62259820
Fehlerkorrekturen
Überschriebene Methoden mit Lebenszyklusereignissen werden nicht mehr mehrmals aufgerufen.
Mehrere
IN
-Parameter werden jetzt korrekt verarbeitet. b/62608681Abstrakte DAO-Klassen können jetzt einen Konstruktor haben, der die
@Database
empfängt Instanz. b/38488747DAO
können jetzt eine Superklasse/Schnittstelle mit Typparametern haben. b/62103620
1.0.0 Alpha 2 – 2. Juni 2017
API-Änderungen
Der EntwertungsTracker 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 mit Typkonverter (b/62100716)
- Rückgabe von
Long[]
von@Insert
-Abfragen zulassen.
1.0.0 Alpha 1 – 17. Mai 2017
MinSDK:14
Allgemeine Hinweise
Obwohl wir vor der Einführung viele Tests durchgeführt haben, befinden sich Architekturkomponenten derzeit in der Alphaphase. Wenn Sie eine Produktions-App erstellen, beachten Sie, dass sich die API vor der Version 1.0 ändert und möglicherweise nicht ganz robust ist. Wenn Sie mit dem Beheben von Problemen in von Ihnen verwendeten Bibliotheken nicht vertraut sind, empfehlen wir, zuerst Architekturkomponenten in Nebenprojekten auszuprobieren.
Wir raten davon ab, jetzt alle Nutzer zu migrieren. Wir halten eine Migrationsanleitung für die Version 1.0 der Architekturkomponenten bereit.
Bekannte Einschränkungen und Probleme
- Der Lebenszyklus
Fragment
undActivityCompat
in der Supportbibliothek implementieren die SchnittstelleLifecycleOwner
noch nicht. Sie werden angezeigt, wenn die Architekturkomponenten Version 1.0.0 erreichen.