15 gennaio 2019
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-beta02. Questa release contiene alcune correzioni di bug.
Correzioni di bug
- Risolto un problema limite per cui il lavoro periodico poteva essere eseguito più di una volta per intervallo sui dispositivi con Android 6.0 (livello API 23). B/121998363
- Risolto il problema di
ConcurrentModificationExceptionsui dispositivi con Android 5.1 (API) livello 22) o inferiore. b/121345393 - È stata corretta l'esecuzione errata del lavoro quando non vengono soddisfatti vincoli sui dispositivi con Android 5.1 (livello API 22) o versioni precedenti. B/122578012
- Gestione del completamento del lavoro ottimizzata per essere più veloce in alcuni casi limite. B/122358129
- È stata aggiunta una modifica per gestire le potenziali condizioni di gara tra più istanze
di
LiveDatautilizzati da WorkManager. - Spostata per utilizzare la dipendenza
Room1.1.1anziché1.1.1-rc01. questi elementi sono identiche. b/122578011
19 dicembre 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-beta01. Questa release non contiene modifiche all'API; in futuro, si prevede che WorkManager manterrà la stabilità dell'API fino alla prossima versione, a meno che non ci sia un problema critico. Questa release contiene alcune correzioni di bug.
Correzioni di bug
- Gli elementi secondari che sono stati annullati in precedenza e che sono stati completati con il lavoro del genitore non verranno più eseguiti. B/120811767
- Classi di logging correttamente inizializzate (visualizzate principalmente durante i test).
18 dicembre 2018
Navigazione
Viene rilasciato il navigatore 1.0.0-alpha09. Questa release contiene modifiche all'API che provocano un errore:
consulta la sezione Modifiche che interrompono di seguito.
Abbiamo scelto di non continuare a sviluppare il
android.arch.navigation:navigation-testing artefatto. Sebbene si sia dimostrato
utile per i test interni di NavController, consigliamo vivamente
strategie di test alternative, ad esempio la simulazione dell'istanza NavController
per verificare che vengano effettuate le chiamate navigate() corrette. Questo
è discusso in dettaglio nel
Discussione su un'attività singola ad AndroidDevSummit 2018
e lavoreremo alla creazione di ulteriore documentazione, specificamente sui test
con il navigatore.
Nuove funzionalità
- I
MenuItemconmenuCategory="secondary"non torneranno più indietro stack quando utilizzato con i metodiNavigationUI. b/120104424 AppBarConfigurationora ti consente di impostare una proprietà di riservaOnNavigateUpListenerche verrà chiamata quandonavController.navigateUp()restituiràfalse, B/79993862 B/120690961
Modifiche che provocano l'interruzione
- Quando utilizzi un
<argument>con unargType="reference", la navigazione non è più analizza il riferimento, fornendo invece l'ID risorsa non elaborato. B/111736515 onNavDestinationSelected()ora torna alla destinazione di partenza del grafico di navigazione per impostazione predefinita rendendole coerenti con i metodisetup. AggiungimenuCategory="secondary"aMenuItemper evitare di rompere il gruppo posteriore. aosp/852869- I metodi
fromBundle()delle classiArgsgenerate ora hanno un valore diverso da nullBundleanzichéBundlecon valori null. aosp/845616
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argTypecorretto invece che sempre come stringhe b/110273284 - La navigazione ora esporta correttamente le proprie risorse pubbliche B/121059552
- Safe Args è ora compatibile con Android Gradle Plugin 3.4 Canary 4 e versioni successive B/119662045
12 dicembre 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha13. Questa release contiene una modifica di piccola entità all'API che sarà utile per alcuni utenti Kotlin.
Modifiche alle API
androidx.work.Resultè stato spostato in una classe interna diListenableWorker. In questo modo si evitano conflitti di refactoring con la classeResultdi primo livello di Kotlin. Si tratta di una modifica API che provoca un errore. b/120564418
Modifiche che interessano le API
androidx.work.Resultè stato spostato in una classe interna diListenableWorker.
6 dicembre 2018
Cercapersone
Il paging di 2.1.0-rc01 viene rilasciato senza modifiche da 2.1.0-beta01.
Navigazione
Viene rilasciato il navigatore 1.0.0-alpha08. Questa release contiene modifiche all'API che provocano un errore:
consulta la sezione Modifiche che interrompono di seguito.
Nuove funzionalità
- Le etichette di destinazione, se utilizzate con i metodi
NavigationUI, ora verranno automaticamente sostituisci{argName}istanze inandroid:labelcon l'argomento corretto b/80267266 - La navigazione ora dipende dalla libreria di supporto 28.0.0 B/120293333
Modifiche che provocano l'interruzione
OnNavigatedListenerè stato rinominato inOnDestinationChangedListenerB/118670572- Ora
OnDestinationChangedListenerpassa anche ilBundledegli argomenti aosp/837142 - Attributi
app:clearTaskeapp:launchDocumente relativi attributi associati sono stati rimossi. Usaapp:popUpTocon la radice del grafico per rimuovi tutte le destinazioni dal tuo back Stack. b/119628354 ActivityNavigator.Extrasora utilizza un patternBuildere aggiunge la possibilità di imposta qualsiasi flagIntent.FLAG_ACTIVITY_aosp/828140NavController.onHandleDeepLinkè stato rinominato inhandleDeepLinkaosp/836063- Molti metodi e classi non pensati per la creazione di sottoclassi, come
NavOptions,NavInflater,NavDeepLinkBuildereAppBarConfiguration, è stata effettuatafinalaosp/835681 - Il metodo
NavHostFragment.setGraph()deprecato è stato rimosso aosp/835684 - Il metodo
NavigationUI.navigateUp(DrawerLayout, NavController)deprecato è stato rimosso. aosp/835684 - La creazione dei frammenti è stata spostata in
FragmentNavigator, così è più facile delega la creazione di frammenti a unFragmentFactory. B/119054429 - Il costruttore per
NavGraphNavigatornon richiede più unContextaosp/835340 - NavigatorProvider è ora
una classe, piuttosto che un'interfaccia.
NavigatorProviderrestituito dagetNavigatorProvider()non ha modificato la sua funzionalità. aosp/830660 - L'utente
NavDestination.navigate()è stato rimosso. Chiamanavigate()suNavigator. aosp/830663 - Refactoring significativo di
Navigator, che elimina la necessità diOnNavigatorNavigatedListenere invecenavigaterestituisce ilNavDestinationa cui è stato raggiunto. Navigatoristanze non possono più inviare eventi pop aNavController. Prendi in considerazione utilizzando unOnBackPressedCallbackper intercetta le pressioni del pulsante Indietro e richiamanavController.popBackStack(). aosp/833716
Correzioni di bug
- Ora
popUpTofunziona in modo coerente quando la destinazione è un elemento<navigation>B/116831650 - Sono stati corretti una serie di bug che hanno generato un
IllegalArgumentExceptionquando si utilizzano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - Ora l'attributo
dataPatterndi<activity>destinazioni verrà compilato da argomenti non stringa richiamandotoString()b/120161365
Arg sicuri
- Safe Args supporta gli oggetti Serializable, inclusi i valori Enum. Tipi di enum
puoi impostare un valore predefinito utilizzando il valore letterale enum senza il nome della classe
(ad es.
app:defaultValue="READ") b/111316353 - Safe Args supporta array di tutti i tipi supportati B/111487504
- Safe Args ora ignora le sottocartelle delle directory delle risorse B/117893516
- Safe Args aggiunge le annotazioni
@Overridequando opportuno b/117145301
5 dicembre 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha12. Questa release contiene alcune modifiche che provocano errori nell'API; consulta la sezione Violazioni delle modifiche all'API di seguito. È probabile che questa versione venga rilasciata come prima beta. alpha12 contiene anche ampi aggiornamenti della documentazione.
Modifiche alle API
- Un nuovo artefatto,
work-rxjava2, introduceRxWorker. Questo è unListenableWorkerche prevede unSingle<Payload>. - Il supporto per Firebase JobDispatcher è stato rimosso a causa del suo imminente ritiro. Ciò significa che l'elemento
work-firebasenon verrà più aggiornato man mano che si avvia la versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
PayloadinResult.Resultè ora una "classe protetta" con tre implementazioni concrete, ottenibili tramiteResult.success()(oResult.success(Data)),Result.failure()(oResult.failure(Data)) eResult.retry(). I tuoiListenableFutureora generanoResultanzichéPayload. Gli elementiWorkernon hanno metodi getter e setter per l'outputData. Si tratta di una modifica che provoca un errore. - Sono stati aggiunti
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)eConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)e varianti per supportare meglio gli URI dei contenuti con attivazione lenta. b/119919774 - Variante
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)aggiunta. Questo metodo richiede l'API 26. - Aggiunti metodi di estensione Kotlin
Operation.await()eListenableFuture.await(). Operation.getException()rinominato inOperation.getThrowable(). Si tratta di una modifica che provoca un errore.- La classe e i metodi
ContentUriTriggersche fanno riferimento non sono più disponibili per il pubblico. Si tratta di una modifica che provoca un errore. - Sono stati rimossi gli altri metodi varargs in
WorkManager,WorkContinuationeOneTimeWorkRequestper semplificare l'API. Per risolvere eventuali problemi di build, puoi aggregare le variabili esistenti conArrays.asList(...). Includiamo comunque versioni a singolo argomento di ciascun metodo. Si tratta di una modifica che provoca un errore. - Sono state rimosse
WorkContinuation.combine(OneTimeWorkRequest, *)varianti. L'API era confusa; i metodicombineesistenti sono più comprensibili. Si tratta di una modifica che provoca un errore.
Correzioni di bug
- Le implementazioni precedenti a Marshmallow sono ora più affidabili nel ripristino dall'interruzione del processo di un'attività già in esecuzione.
LiveDataosservato tramiteobserveForeverviene monitorato tramite WorkManager. Questo è un backport di una correzione relativa alla libreria delle stanze. B/74477406Data.Builder.build()ora genera un'eccezione se l'oggetto serializzato supera le dimensioni massime consentite. In precedenza, questo si verificava solo su un thread in background per il quale non potevi gestirlo correttamente.- Ulteriore distinzione tra il lavoro interrotto e quello annullato;
getWorkInfoById()restituirà unWorkInfocon iCANCELLEDdiStatenei giorniListenableWorker.onStopped(). - Considera
nullResultcome errori inListenableWorker. B/120362353 - Correzione speculativa per Shield Tablet con l'API 24 che a volte generava un
IllegalArgumentException. B/119484416
Modifiche che interessano le API
- Il supporto per Firebase JobDispatcher è stato rimosso a causa del suo imminente ritiro. Ciò significa che l'elemento
work-firebasenon verrà più aggiornato man mano che si avvia la versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
PayloadinResult.Resultè ora una "classe protetta" con tre implementazioni concrete, ottenibili tramiteResult.success()(oResult.success(Data)),Result.failure()(oResult.failure(Data)) eResult.retry(). I tuoiListenableFutureora generanoResultanzichéPayload. Gli elementiWorkernon hanno metodi getter e setter per l'outputData. - Aggiunti metodi di estensione Kotlin
Operation.await()eListenableFuture.await(). Operation.getException()rinominato inOperation.getThrowable().- La classe e i metodi
ContentUriTriggersche fanno riferimento non sono più disponibili per il pubblico. - Sono stati rimossi gli altri metodi varargs in
WorkManager,WorkContinuationeOneTimeWorkRequestper semplificare l'API. Per risolvere eventuali problemi di build, puoi aggregare le variabili esistenti conArrays.asList(...). Includiamo comunque versioni a singolo argomento di ciascun metodo. - Sono state rimosse
WorkContinuation.combine(OneTimeWorkRequest, *)varianti. L'API era confusa; i metodicombineesistenti sono più comprensibili.
4 dicembre 2018
Room
La stanza 2.1.0-alpha03 viene rilasciata con il supporto delle coroutine e diverse correzioni di bug.
Modifiche alle API
- L'FTS
tokenizerin@Fts3/@Fts4ora prende una stringa anziché un'enum. Ciò consente l’utilizzo di tokenizzatori personalizzati da parte delle stanze. I tokenizzatori integrati sono ancora definiti inFtsOptionscome costanti stringa. b/119234881
Nuove funzionalità
- Couroutine: i metodi DAO ora possono essere funzioni di sospensione. Per supportare le funzioni di sospensione nella stanza virtuale, è stato rilasciato un nuovo artefatto,
room-coroutines. B/69474692 - I metodi DAO annotati con
@Insert,@Deleteo@Updateora supportanoListenableFuturecome tipo restituito. b/119418331
Correzioni di bug
- È stato corretto un bug per cui la stanza virtuale cercava erroneamente di trovare un costruttore con colonne nella proprietà
ignoredColumnsdi@Entity. B/119830714 - È stato corretto un bug per cui Room non contrassegnava i parametri del metodo DAO come definitivi nell'implementazione generata. B/118015483
- È stato corretto un bug per cui il processore della stanza si arrestava in modo anomalo se veniva segnalato un errore relativo a una query con simboli speciali. B/119520136
- È stato corretto un bug per cui Room avrebbe rifiutato altre varie implementazioni di
Collectioncome argomenti di un'espressioneIN. B/119884035 - È stato corretto un bug per cui i LiveData restituiti dalla stanza avrebbero ricevuto la garbage collection quando osservati per sempre, causando l'interruzione dell'emissione di nuovi dati. B/74477406
- Blocco di
RoomDatabaseaggiornato per ridurne il conflitto. b/117900450
8 nov 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha11. Questa release contiene molte modifiche che diventeranno stabili nell'API il giorno beta.
In questa release sono presenti modifiche all'API che provocano errori; consulta la sezione Violazioni delle modifiche all'API di seguito.
Modifiche alle API
work-runtime-ktxintroduce un nuovoCoroutineWorker.WorkStatusè stato rinominato inWorkInfo. Tutte le varianti del metodogetStatuscorrispondenti sono state rinominate ingetWorkInfovarianti corrispondenti. Si tratta di una modifica che provoca un errore.ListenableWorker.onStopped()non accetta più un argomento booleano che rappresenta seWorkRequestè stato annullato.WorkManagernon fa più questa distinzione. Si tratta di una modifica che provoca un errore.- Il pacchetto
androidx.work.testè stato rinominato in pacchettoandroidx.work.testing. Si tratta di una modifica che provoca un errore. - I setter su
Constraintsnon fanno più parte dell'API pubblica. Si tratta di una modifica che provoca un errore. WorkerParameters.getTriggeredContentUris()eWorkerParameters.getTriggeredContentAuthorities()hanno restituito array in precedenza. Ora questi metodi restituiscono le raccolte. Si tratta di una modifica che provoca un errore.ListenableWorker.onStartWork()è stato rinominato inListenableWorker.startWork(). Si tratta di una modifica che provoca un errore.- Il costruttore per
WorkStatusnon fa più parte dell'API pubblica. Si tratta di una modifica che provoca un errore. Configuration.getMaxJobSchedulerID()eConfiguration.getMinJobSchedulerID()sono stati rinominatiConfiguration.getMinJobSchedulerId()eConfiguration.getMaxJobSchedulerId()rispettivamente. Si tratta di una modifica che provoca un errore.- Sono state aggiunte molte annotazioni
@NonNullall'API pubblica per migliorarne l'ergonomia. - Aggiungi l'API
WorkManager.enqueueUniqueWork()per accodareOneTimeWorkRequestunivoci senza dover creare unWorkContinuation. - Tutte le varianti dei metodi
enqueueecancelsuWorkManagerora restituiscono un nuovo tipo diOperation. Si tratta di una modifica che provoca un errore. - Tutte le varianti di
enqueuenon accettano più vararg perWorkRequest. Si tratta di una modifica che provoca un errore. Utilizza le raccolte. Puoi utilizzareArrays.asList()per modificare il codice esistente. Lo abbiamo fatto per ridurre la superficie dell'API e il conteggio dei metodi. - Se provi a
initializeWorkManagerpiù volte per processo, ora verrà restituito unIllegalStateException. Si tratta di una modifica che provoca un errore.
Correzioni di bug
- Gli elementi
WorkRequest.Buildernell'elementowork-runtime-ktxora utilizzanoListenableWorker. Correzioni b/117666259 - Assicurati che la prossima esecuzione di
PeriodicWorksia nel futuro. Correzioni b/118204399 - Rimuovi il potenziale I/O del disco quando utilizzi WorkManager all'avvio dell'app. Correzioni b/117796731
- Correggi una condizione di gara in
WorkConstraintsTracker. Correzioni di android-workmanager/issues/56
Modifiche che interessano le API
WorkStatusè stato rinominato inWorkInfo. Tutte le varianti del metodogetStatuscorrispondenti sono state rinominate ingetWorkInfovarianti corrispondenti.ListenableWorker.onStopped()non accetta più un argomento booleano che rappresenta seWorkRequestè stato annullato.WorkManagernon fa più questa distinzione.- Il pacchetto
androidx.work.testè stato rinominato in pacchettoandroidx.work.testing. - I setter su
Constraintsnon fanno più parte dell'API pubblica. WorkerParameters.getTriggeredContentUris()eWorkerParameters.getTriggeredContentAuthorities()hanno restituito array in precedenza. Ora questi metodi restituiscono le raccolte.ListenableWorker.onStartWork()è stato rinominato inListenableWorker.startWork().- Il costruttore per
WorkStatusnon fa più parte dell'API pubblica. Configuration.getMaxJobSchedulerID()eConfiguration.getMinJobSchedulerID()sono stati rinominatiConfiguration.getMinJobSchedulerId()eConfiguration.getMaxJobSchedulerId()rispettivamente.- Tutte le varianti dei metodi
enqueueecancelsuWorkManagerora restituiscono un nuovo tipo diOperation. - Tutte le varianti di
enqueuenon accettano più vararg perWorkRequest. - Se provi a
initializeWorkManagerpiù volte per processo, ora verrà restituito unIllegalStateException.
1 novembre 2018
Cercapersone
Il paging di 2.1.0-beta01 viene rilasciato senza modifiche da 2.1.0-alpha01.
30 ottobre 2018
Room
La stanza 2.1.0-alpha02 viene rilasciata con diverse correzioni di bug e una nuova funzionalità.
Nuove funzionalità
- È stato aggiunto il supporto per fare riferimento a
@DatabaseViewin un@Relation. B/117680932
Correzioni di bug
- È stato corretto un bug per cui Room eseguiva l'I/O del disco nel thread principale durante la sottoscrizione e l'eliminazione da un tipo restituito Rx. B/117201279
- È stato corretto un bug per cui la stanza virtuale non riusciva a trovare un convertitore dei tipi appropriato per un campo in una classe di entità Kotlin. B/111404868
- È stato corretto un bug per cui Room generava codice errato per un'implementazione dell'interfaccia
DAOcontenente un metodo predefinito Kotlin senza argomenti. b/117527454 - Aggiornamento del parser grammaticale SQLite di Room, in modo da risolvere un problema di prestazioni che causava tempi di compilazione lunghi. B/117401230
29 ottobre 2018
Navigazione
Il sistema di navigazione 1.0.0-alpha07 viene rilasciato con correzioni di bug e modifiche all'API.
Nuove funzionalità
- Una nuova risorsa AppBarConfiguration consente di personalizzare le destinazioni da considerare di primo livello. destinazioni. Consulta la documentazione aggiornata per maggiori dettagli. B/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico B/110300470
- I link diretti ora supportano gli schemi personalizzati contenenti punti, trattini e segni più. B/112806402
Modifiche che provocano l'interruzione
- Il modulo
navigation-testing-ktxè stato piegatonavigation-testing artifacte non sarà più pubblicata. - L'artefatto
navigation-testingora ha una dipendenza dallo standard Kotlin libreria. L'API è stata modificata per essere più coerente con Kotlin , ma puoi continuare a utilizzarla per test scritti in Java. - I grafici di navigazione registrati con manifest dei metadati non sono più supportati. B/118355937
- Le azioni non possono più essere associate a <activity> destinazioni. aosp/785539
Correzioni di bug
- I link diretti ora analizzano correttamente i parametri di query. B/110057514
- Le destinazioni delle attività ora applicano correttamente tutte le animazioni di entrata e uscita. B/117145284
- Correzione dell'arresto anomalo che si verifica dopo le modifiche alla configurazione durante l'utilizzo di un Navigatori. B/110763345
Arg sicuri
- Gli argomenti sicuri ora hanno una dipendenza fissa dal plug-in Android Gradle 3.2.1. B/113167627
- Ora è possibile generare indicazioni per le classi interne. B/117407555
- È stato risolto un problema relativo alla generazione di indicazioni stradali in un elemento <include> grafico. B/116542123
12 ottobre 2018
Cercapersone
La funzionalità di impaginazione di 2.1.0-alpha01 viene rilasciata con due importanti aggiunte: rilascio di pagine e librerie di estensioni KTX per ogni artefatto, oltre a diverse altre modifiche all'API e correzioni di bug.
Modifiche alle API
- È stato aggiunto
PagedList.Config.Builder.setMaxSize()per limitare il numero di elementi caricati in memoria. androidx.paging.Config()aggiunta come alternativa a Kotlin perPagedList.Config.Builderandroidx.paging.PagedList()aggiunta come alternativa a Kotlin perPagedList.BuilderDataSourceFactory.toLiveData()aggiunta come alternativa a Kotlin perLivePagedListBuilderDataSourceFactory.toObservable()etoFlowable()aggiunti come alternative a Kotlin perRxPagedListBuilderAsyncPagedListDiffer.addPagedListListener()aggiunto per l'ascolto quando PagedList viene scambiato. b/111698609- È stata aggiunta
PagedListAdapter.onCurrentListChanged()variante che supera l'elenco vecchio e nuovo, variante precedente deprecata. - Sono state aggiunte
PagedListAdapter/AsyncPagedListDiffer.submitList()varianti che richiedono un callback aggiuntivo che si attiva se/quando l'elenco di pagine viene visualizzato dopo le differenze. In questo modo puoi sincronizzare uno scambio PagedList con altri aggiornamenti dell'interfaccia utente. B/73781068 PagedList.getLoadedCount()aggiunto per farti sapere quanti elementi ci sono. Tieni presente che il valore restituito è sempre uguale a.size()se i segnaposto sono disabilitati.
Correzioni di bug
- È stata corretta una condizione di gara durante la differenza se gli elenchi vengono riutilizzati b/111591017
PagedList.loadAround()ora generaIndexOutOfBoundsExceptionquando l'indice non è valido. In precedenza, poteva arrestarsi in modo anomalo con un'altra eccezione poco chiara.- È stato risolto il problema per cui una dimensione del caricamento iniziale estremamente ridotta insieme a dati invariati avrebbe comportato l'assenza di ulteriori caricamenti b/113122599
11 ottobre 2018
Responsabile del lavoro
WorkManager 1.0.0-alpha10 viene rilasciato con supporto per il lavoro asincrono controllato dallo sviluppatore. In questa release sono presenti modifiche all'API che provocano errori; consulta la sezione Violazioni delle modifiche all'API di seguito.
Prevediamo che WorkManager sta entrando nelle fasi finali del suo periodo alpha. Prevediamo che l'API sia stabile in versione beta, quindi dedica un po' di tempo all'invio del tuo feedback sul nostro strumento di segnalazione dei problemi.
Modifiche alle API
- Sono stati rimossi tutti i metodi e le classi
deprecatedin precedenza, in particolare il costruttoreWorkerpredefinito. Si tratta di una modifica API che provoca un errore. NonBlockingWorkerè stato rinominato inListenableWorker, che ora è un corso pubblico non nascosto e pronto all'uso.ListenableWorkerfornisce l'accesso a un metodo astratto,ListenableFuture<Payload> onStartWork(), che viene chiamato sul thread principale. Spetta a te iniziare ed elaborare il lavoro in modo asincrono. Al termine, devi aggiornareListenableFuturein modo appropriato. Le implementazioni di riferimento degli elementiListenableFuturesono fornite nel pacchettoFuturesinalpha02(vedi sotto la sezioneWorkManager).WorkerestendeListenableWorkere funziona ancora come prima, con un metodoResult doWork()astratto.- Riproduzione casuale di alcuni metodi e membri da
WorkeraListenableWorker. - A breve forniremo implementazioni di riferimento per i
ListenableWorkerche utilizzano coroutine Kotlin (una volta rilasciate le versioni stabili) e RxJava2.
- L'interfaccia
WorkerFactorye l'implementazione concretaDefaultWorkerFactorysono state unite in una classe astratta chiamataWorkerFactory. L'implementazione garantisce che il comportamento predefinito basato sulla riflessione venga chiamato come un ultimo sforzo per qualsiasi istanzaWorkerFactorycreata dall'utente. Si tratta di una modifica che provoca un errore. WorkManager.synchronous()eWorkContinuation.synchronous()e tutti i metodi correlati rimossi.ListenableFuture<Void>aggiunto come tipo restituito di molti metodi nell'API. Si tratta di una modifica API che provoca un errore.- Ora puoi visualizzare e osservare in modo sincrono utilizzando le
ListenableFuture. Ad esempio,WorkManager.enqueue()utilizzato per restituirevoid; ora restituisce unListenableFuture<Void>. Puoi chiamareListenableFuture.addListener(Runnable, Executor)oListenableFuture.get()per eseguire il codice al termine dell'operazione. - Tieni presente che questi
ListenableFuturenon indicano se l'operazione è riuscita o meno. ma solo che hanno finito. Dovrai comunque concatenare i metodi WorkManager per trovare queste informazioni. - Ignoriamo le chiamate
cancel()su questi oggetti perché generano confusione e difficili da spiegare (stai annullando l'operazione o il lavoro risultante?) Ciò rientra nel contratto diFuture. - Per mantenere la parità con i metodi
getStatus*sincroni, abbiamo fornitoListenableFuturevarianti e abbiamo rinominato quelli esistenti che hanno restituitoLiveDatain modo che abbiano esplicitamente "LiveData" all'interno del nome (ad esempiogetStatusesByIdLiveData(UUID)). Si tratta di una modifica API che provoca un errore.
- Ora puoi visualizzare e osservare in modo sincrono utilizzando le
Correzioni di bug
- È stato risolto il problema noto di alpha09 relativo ai file
androidx-annotations.produplicati. Puoi rimuovere la soluzione alternativa dalle note di rilascio precedenti eliminandoexclude 'META-INF/proguard/androidx-annotations.pro'dal file di Gradle. - Sono state aggiunte configurazioni di ProGuard per mantenere il nuovo costruttore
Worker. b/116296569 - Correggi
NullPointerExceptionpotenziale in una gara in cui il lavoro è statoREPLACEd. b/116253486 e b/116677275 WorkContinuation.combine()ora accetta uno o piùWorkContinuationinvece di due o più. B/117266752
Modifiche che interessano le API
- Sono stati rimossi tutti i metodi e le classi
deprecatedin precedenza, in particolare il costruttoreWorkerpredefinito. - L'interfaccia
WorkerFactorye l'implementazione concretaDefaultWorkerFactorysono state unite in una classe astratta chiamataWorkerFactory. WorkManager.synchronous()eWorkContinuation.synchronous()rimossi.- I metodi
WorkManager.getStatus*()ora restituisconoListenableFutures.WorkManager.getStatus*LiveData()restituisceLiveDatasec.
Contratti a termine
Futures 1.0.0-alpha02 rilasciato.
Modifiche alle API
- Ora gli sviluppatori possono utilizzare
ResolvableFutureeAbstractResolvableFuturecome implementazioni concrete leggere diListenableFuture.
8 ottobre 2018
Room
La stanza 2.1.0-alpha01 viene svincolata.
Nuove funzionalità
- FTS: la stanza virtuale ora supporta le entità con una tabella FTS3 o FTS4 di mappatura. Ora le classi annotate con
@Entitypossono essere ulteriormente annotate con@Fts3o@Fts4per dichiarare una classe con una tabella di ricerca a testo intero di mappatura. Le opzioni FTS per un'ulteriore personalizzazione sono disponibili tramite i metodi dell'annotazione. B/62356416 - Visualizzazioni: la stanza virtuale ora supporta la dichiarazione di una classe come query archiviata, nota anche come vista, mediante l'annotazione @DatabaseView. B/67033276
- Valore automatico: la stanza virtuale ora supporta la dichiarazione delle classi annotate con Valore automatico come entità e POJO. Ora le annotazioni delle stanze
@PrimaryKey,@ColumnInfo,@Embeddede@Relationpossono essere dichiarate nei metodi astratti di una classe annotata con valori automatici. Tieni presente che queste annotazioni devono essere accompagnate anche da@CopyAnnotationsaffinché la stanza virtuale possa interpretarle correttamente. b/62408420 - Supporto aggiuntivo per i tipi di reso Rx: i metodi DAO annotati con
@Insert,@Deleteo@Updateora supportano i tipi restituiti RxCompletable,Single<T>eMaybe<T>. B/63317956 - Tipi immutabili con
@Relation: in precedenza, la stanza virtuale richiedeva che i campi annotati@Relationfossero configurabili, ma ora possono essere parametri del costruttore. enableMultiInstanceInvalidation: è una nuova API inRoomDatabase.Builderche consente l'annullamento della convalida in più istanze di RoomDatabase utilizzando lo stesso file di database. Questo meccanismo di invalidazione di più istanze funziona anche su più processi. B/62334005fallbackToDestructiveMigrationOnDowngrade: è una nuova API inRoomDatabase.Builderche ricrea automaticamente il database in caso di downgrade. B/110416954ignoredColumns: è una nuova API nell'annotazione@Entityche può essere utilizzata per elencare i campi ignorati per nome. Utile per ignorare i campi ereditati su un'entità. B/63522075
Modifiche al comportamento / API
mCallbackemDatabaseinRoomDatabaseadesso sono@Deprecatede verranno rimossi nella prossima versione principale di Stanza virtuale. b/76109329
Correzioni di bug
- Sono stati risolti due problemi per cui la stanza virtuale non veniva recuperata correttamente da un database danneggiato o da una migrazione errata durante l'inizializzazione. b/111504749 e b/111519144
- Ora Room utilizzerà correttamente il costruttore principale di Kotlin nelle classi di dati, evitando di dichiarare i campi come
vars. B/105769985
1° ottobre 2018
La stanza 2.0.0 viene svincolata senza modifiche dal giorno 2.0.0-rc01.
La funzionalità di impaginazione di 2.0.0 viene rilasciata con una singola correzione di bug.
Cercapersone
Correzioni di bug
- È stato risolto un arresto anomalo che poteva verificarsi durante lo scorrimento molto veloce utilizzando
PositionalDataSourcee i segnaposto b/114635383.
21 settembre 2018
Il ciclo di vita 2.0.0 viene rilasciato con una correzione di bug da 2.0.0-rc01 in ViewModel.
Ciclo di vita
Correzioni di bug
- È stata corretta una regola di proGuard ViewModel che erroneamente rimuoveva i costruttori b/112230489
20 settembre 2018
Navigazione
Il sistema di navigazione 1.0.0-alpha06 viene rilasciato con correzioni di bug e modifiche all'API.
Nuove funzionalità
- Le transizioni di elementi condivisi per le destinazioni Frammento e Attività sono ora supportate b/79665225. Per ulteriori informazioni, vedi Implementare la navigazione con il componente Architettura di navigazione.
- Se selezioni un elemento in
NavigationView, tutti i riquadri inferiori contenenti b/112158843 verranno chiusi
Modifiche alle API
- Modifica di interruzione: il metodo
navigate()di navigazione ora richiede un parametroNavigator.Extras. - Il metodo
getGraph()di NavController ora èNonNullb/112243286
Correzioni di bug
NavigationUI.setupWithNavController()non fa più trapelare più visualizzazioni se utilizzato con visualizzazioni da singole destinazioni b/111961977- Navigator
onSaveState()ora viene chiamato una sola volta b/112627079
Arg sicuri
- Ora i corsi Directions di destinazione di navigazione estendono la classe Directions del genitore, se esistente b/79871405
- Le classi Directions e Args ora hanno un'utile implementazione di
toString()b/111843389
19 settembre 2018
Responsabile del lavoro
WorkManager 1.0.0-alpha09 viene rilasciato con correzioni di bug, aggiornamenti dell'infrastruttura e modifiche alle API.
Problema noto
Se riscontri il seguente problema: "È stato trovato più di un file con il percorso indipendente dal sistema operativo 'META-INF/proguard/androidx-annotations.pro'", inserisci quanto segue nel file Gradle come soluzione alternativa temporanea mentre risolviamo il problema in alpha10:
Alla moda
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Correzioni di bug
- Aggiunta di un'altra correzione necessaria per "100 job" . B/115560696
- Sono state aggiunte alcune correzioni per gli errori dei vincoli di chiave esterna dovuti a condizioni di gara. B/114705286
- Chiamate
ConstraintTrackingWorker.onStopped(boolean)delegate all'entitàWorkersottostante. B/114125093 - Applica il ritardo minimo di backoff corretto per Firebase JobDispatcher. B/113304626
- Il miglioramento dei thread garantisce l'interno della libreria.
- Correggi il potenziale problema relativo alla deduplicazione interna di
LiveData.
Modifiche alle API
- Ora puoi creare le tue istanze
Workerin fase di runtime specificando unWorkerFactorycome parte diWorkManager.Configuration. Il valore di fabbrica di riserva èDefaultWorkerFactory, che corrisponde al comportamento delle versioni precedenti di WorkManager.- I costruttori predefiniti per
WorkereNonBlockingWorkersono ora contrassegnati come deprecati. Usa il nuovo costruttore (Worker(Context, WorkerParameters)) e chiamasuper(Context, WorkerParameters). le versioni future di WorkManager rimuoverà il costruttore predefinito.
- I costruttori predefiniti per
- Abbiamo iniziato a utilizzare internamente il nuovo artefatto
ListenableFuture(privo di dipendenze di Guava). Introdurremo ListenableFutures nell'API nelle prossime versioni. Questa modifica supporterà la visualizzazione finale diNonBlockingWorker. - Aggiungi la possibilità di attivare il lavoro a tempo in
TestDrivertramiteTestDriver.setInitialDelayMet(UUID)eTestDriver.setPeriodDelayMet(UUID). B/113360060
Modifiche che provocano l'interruzione
- I costruttori
WorkereNonBlockingWorkerpredefiniti sono deprecati. Esegui la migrazione al nuovo costruttore appena possibile. Le versioni future rimuoveranno il costruttore predefinito.
27 agosto 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha08 con correzioni di bug.
Correzioni di bug
- I componenti WorkManager sono esplicitamente etichettati come inconsapevoli ad avvio diretto, in modo che non vengano attivati durante l'avvio diretto. In futuro, forniremo una versione di WorkManager sensibile all'avvio diretto. B/112665532
- È stato risolto un problema per cui il nuovo tentativo non era in esecuzione. B/112604021
- È stato corretto il problema di esecuzione periodica del lavoro non ripetuto (relativo al problema di cui sopra). B/112859683
- I criteri di backoff vengono rispettati quando il processo dell'app è già in esecuzione.
- Messaggi di eccezione corretti in
Dataper indicare che il limite è di 10 kB. - Il valore massimo di
Configuration.setMaxSchedulerLimit(int)è stato ridotto a 50 per tenere conto di una certa latenza nel completamento dell'elaborazione diJobScheduler. B/112817355
16 agosto 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha07 con correzioni di bug e modifiche minori all'API.
Correzioni di bug
- È stata corretta una potenziale query SQL con limiti negativi che poteva restituire un numero illimitato di risultati.
- Il lavoro terminato l'esecuzione ora annulla correttamente tutte le copie in sospeso di quel lavoro in altri scheduler. Ciò ha portato al superamento del limite di
JobSchedulerjob. b/111569265 - È stato corretto un
ConcurrentModificationExceptioninConstraintTracker. B/112272753 - Annotazioni del tipo restituito di
Data.getBooleanArray(String)eData.getIntArray(String)modificate in@Nullableanziché@NonNull. B/112275229
Modifiche alle API
Workerora estende un nuovo corso,NonBlockingWorker. Ciò non influisce sull'utilizzo attuale. In futuro,NonBlockingWorkerdiventerà un'entità completamente supportata per le soluzioni di thread personalizzate.- Annotazioni del tipo restituito di
Data.getBooleanArray(String)eData.getIntArray(String)modificate in@Nullableanziché@NonNull. B/112275229 - Estensioni Kotlin: sono deprecate
Map.toWorkData()e sono state aggiunte unaworkDataOf(vararg Pair<String, Any?>)di primo livello per garantire una maggiore coerenza con le API esistenti.
10 agosto 2018
Navigazione
Il sistema di navigazione 1.0.0-alpha05 è stato rilasciato con correzioni di bug.
Correzioni di bug
- È stato corretto un bug che causava un comportamento errato del backstack. B/111907708
- È stato corretto un bug in
equals()di classi di Args generati. b/111450897 - Correggi un errore di build in Safe Args. B/109409713
- Correggi una conversione da identificatori di risorsa a nomi Java b/111602491
- Risolvere i problemi segnalati dai messaggi di errore relativi ai valori null nel plug-in Safe Args.
- Aggiungi annotazioni con valore nullo mancanti.
6 agosto 2018
Versioni AndroidX delle release 2.0.0-rc01 di Lifecycle, Room e Paging. Tutti gli elementi sono invariati da 2.0.0-beta01.
1 agosto 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha06 con correzioni di bug.
Correzioni di bug
- Impedisci il blocco del database durante la pianificazione del lavoro. B/111801342
- Correggere un bug che causava la mancata esecuzione di
PeriodicWorkin base alla programmazione in modalità Sospensione. b/111469837 - Correggi una condizione di gara durante il monitoraggio dei vincoli che causano l'arresto anomalo di
WorkManager. googlecodelabs/android-workmanager/issues/56 - Crea
WorkRequestunivoci quando utilizziWorkRequest.Builder#build(). B/111408337 - Attiva l'utilizzo di
RescheduleReceiversolo quando sono presentiWorkRequestche lo richiedono. B/111765853
24 luglio 2018
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha05 con importanti correzioni di bug e modifiche al logging.
Modifiche alle API
WorkManager.getInstance()è ora annotato con@NonNullanziché@Nullable. Se invece il singleton non viene inizializzato correttamente in caso di inizializzazione manuale, il metodo genera unIllegalStateException. Si tratta di un che provoca un errore di modifica dell'API.- È stata aggiunta una nuova API,
Configuration.Builder.setMinimumLoggingLevel(int), che può controllare il livello di dettaglio di WorkManager. Per impostazione predefinita, WorkManager registraLog.INFOe versioni successive. - È stata modificata la firma di
Data.getString()in modo che non utilizzi più un valore predefinito (è implicitamentenull). Si tratta di una modifica API che provoca un errore. - Alcuni metodi sono stati contrassegnati come necessari solo per uso interno come
@hide. Sono inclusi il costruttoreConstraints,Data.toByteArray()eData.fromByteArray(byte[]). Si tratta di una modifica API che provoca un errore.
Correzioni di bug
- WorkManager non esegue più il lavoro durante i casi noti di backup automatico. Questo potrebbe aver causato un arresto anomalo. B/110564377
- È stata corretta la doppia pianificazione di
PeriodicWorkRequests quando si utilizzavaJobScheduler. B/110798652 - È stato risolto un problema relativo alla mancata esecuzione di
PeriodicWorkRequestdopo la sospensione del dispositivo. b/111469837 - È stato risolto un problema relativo ai ritardi iniziali durante l'utilizzo di Firebase JobDispatcher. B/111141023
- Sono stati risolti alcuni potenziali problemi di cronometraggio e condizioni di gara.
- Hai liberato correttamente
BroadcastReceiverche non erano più necessari. - È stata ottimizzata la ripianificazione delle prestazioni quando le app si riavviano dopo essere state chiuse forzatamente.
- È consentito chiamare
TestScheduler.setAllConstraintsMet(UUID)prima o dopo aver accodato ilWorkRequestspecificato. B/111238024
Modifiche che provocano l'interruzione
WorkManager.getInstance()è ora annotato con@NonNullanziché@Nullable.- È stata modificata la firma di
Data.getString()in modo che non utilizzi più un valore predefinito (è implicitamentenull). - Alcuni metodi sono stati contrassegnati come necessari solo per uso interno come
@hide. Sono inclusi il costruttoreConstraints,Data.toByteArray()eData.fromByteArray(byte[]).
19 luglio 2018
Navigazione
Navigazione 1.0.0-alpha04 e il plug-in Gradle di Safe Args associato contengono una serie di modifiche dell'API, modifiche del comportamento e correzioni di bug.
Modifiche al comportamento / API
- NavHostFragment imposterà sempre il frammento corrente come frammento di navigazione principale, assicurandosi che i gestori dei frammenti figlio vengano sbloccati prima che venga sbloccato il NavController esterno b/111345778
Arg sicuri
- Modifica che provoca un errore: il valore di
app:typeè stato modificato inapp:argTypeper evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - Ora è possibile fare clic sui messaggi di errore di Safe Args b/111534438
- Le classi Args ora confermano che gli attributi
NonNullin realtà non sono nulli b/111451769 - Sono state aggiunte altre annotazioni
NonNullai corsi generati da NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- È stato risolto un problema relativo al pulsante Indietro del sistema dopo aver creato link diretti a una destinazione di frammento b/111515685
12 luglio 2018
Navigazione
Navigazione 1.0.0-alpha03 e il plug-in Gradle di Safe Args associato contengono una serie di modifiche dell'API, modifiche del comportamento e correzioni di bug.
Modifiche al comportamento / API
- È stato aggiunto un metodo NavigationUI.setupWithNavController per Google Toolbar b/109868820
- È stato aggiunto un metodo NavigationUI.setupWithNavController per CollapsingToolbarLayout b/110887183
- popBackStack() ora restituisce false quando lo stack posteriore è vuoto o quando l'ID destinazione specificato non è nello stack posteriore b/110893637
- FragmentNavigator ora ignora le operazioni di navigazione dopo che FragmentManager ha salvato lo stato, evitando le eccezioni "Impossibile eseguire questa azione dopo onSaveInstanceState" b/110987825
Arg sicuri
- Breaking Change: i caratteri non alfanumerici nei nomi di azione e argomento verranno sostituiti da caratteri maiuscoli e minuscoli nei rispettivi nomi dei metodi NavDirections
- .
- Ad es.
DemoController.indexdiventeràsetDemoControllerIndexb/79995048 - Ad es.
action_show_settingsdiventeràactionShowSettingsb/79642240
- Ad es.
- Modifica di interruzione: gli argomenti ora sono considerati non nulli per impostazione predefinita. Per consentire valori nulli negli argomenti stringa e separabili, aggiungi
app:nullable="true"b/79642307 - Ora puoi utilizzare
app:type="long"con defaultValues nel formato "123L" b/79563966 - Gli argomenti assegnabili ora sono supportati, utilizzando un nome completo di classe per
app:type. L'unico valore predefinito supportato è"@null"b/79563966 - Le classi Args ora implementano
equals()ehashCode()b/79642246 - Il plug-in Safe Args ora può essere applicato ai progetti di libreria b/80036553
- Il plug-in Safe Args ora può essere applicato ai progetti di funzionalità b/110011752
Correzioni di bug
- Sono stati risolti i problemi durante la navigazione durante i metodi del ciclo di vita dei frammenti b/109916080
- Sono stati risolti i problemi che si verificavano più volte durante la navigazione tra grafici nidificati b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTocon la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori
app:defaultValuevenivano trasmessi come stringhe b/110710788 - aapt2 in bundle con il plug-in Android Gradle 3.2 Beta 01 ora aggiunge regole di conservazione per ogni attributo
android:namenei file XML di navigazione b/79874119 - È stata corretta la perdita di memoria durante la sostituzione del FragmentNavigator predefinito b/110900142
2 luglio 2018
Versioni AndroidX delle release 2.0.0-beta01 di Lifecycle, Room e Paging.
Ciclo di vita
Correzioni di bug
- Fissa la regola di proGuard di LifecycleObserver per mantenere solo le implementazioni, non le sottointerfacce b/71389427
- Correzione delle regole di ProGuard ViewModel per consentire l'offuscamento e la riduzione
Room
Modifiche al comportamento / API
- È stato aggiunto
RoomDatabase.Builder.setQueryExecutor()per consentire la personalizzazione della posizione in cui vengono eseguite le query - Aggiunto il supporto RxJava2
Observable - Le implementazioni DAO e database generate sono ora definitive
Correzioni di bug
- Specifica il nome della classe/del campo in "impossibile trovare il getter per il campo" errore b/73334503
- È stata corretta la compatibilità con le versioni precedenti di RoomOpenHelper con le versioni precedenti della stanza b/110197391
Cercapersone
Correzioni di bug
- È stato corretto il contenuto che scompariva in alcuni casi anteposti (segnaposto disattivati, PositionalDataSource) b/80149146
- (Già rilasciato in
1.0.1) Sono stati risolti gli arresti anomali in cuiPagedListAdaptereAsyncPagedListDiffernon segnalavano eventi di spostamento. b/110711937
26 giugno 2018
Cercapersone
La funzionalità di impaginazione di 1.0.1 viene rilasciata con una singola correzione di bug in runtime. Ti consigliamo vivamente di utilizzare 1.0.1 per una maggiore stabilità. Viene rilasciato anche il Paging RxJava2 1.0.1, identico a 1.0.0-rc1.
Correzioni di bug
- È stato risolto il problema degli arresti anomali in cui
PagedListAdaptereAsyncPagedListDiffernon segnalavano gli eventi di movimento. B/110711937
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha04.
Correzioni di bug
Ora le
PeriodicWorkRequestvengono riprogrammate correttamente quando si utilizza l'implementazione basata suAlarmManager.È stato corretto un potenziale errore ANR durante la ripianificazione di tutti i worker dopo un arresto forzato o un riavvio. B/110507716
Sono state aggiunte annotazioni con valore nullo a varie API WorkManager. B/110344065
Registra le eccezioni non rilevate che si verificano durante l'esecuzione del worker. B/109900862
Migrazioni distruttive dei database consentite nel caso in cui tu decida di eseguire il rollback a una versione precedente di WorkManager. B/74633270
È stato risolto un arresto anomalo della migrazione in caso di creazione di tag impliciti duplicati. Si tratta di un problema molto raro che si è verificato solo se hai utilizzato personalmente lo stesso formato di tag implicito.
19 giugno 2018
Room
La stanza 1.1.1 viene svincolata. Questa release è identica alla stanza 1.1.1-rc1.
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha03.
Correzioni di bug
È stata corretta una condizione di gara nell'implementazione basata su
AlarmManager. b/80346526.Sono stati corretti i job duplicati quando si utilizzava
JobSchedulerdopo il riavvio di un dispositivo.I job con trigger URI dei contenuti ora vengono mantenuti tra i riavvii. B/80234744
Aggiornamenti alla documentazione. b/109827628, b/109758949, b/80230748
È stato risolto un problema di arresto anomalo durante la riinserimento in coda di
WorkRequest. b/109572353.Sono stati corretti gli avvisi del compilatore Kotlin durante l'utilizzo della dipendenza
work-runtime-ktx.WorkManager ora utilizza
Roomversione1.1.1-rc1.
Modifiche alle API
È stata aggiunta
getStatusesSync(), la versione sincrona diWorkContinuation.getStatuses().Workerha la possibilità di distinguere tra l'annullamento avviato dall'utente e l'interruzione temporanea richiesta dal sistema operativo.Worker.isStopped()restituiscetruese è stato richiesto un qualsiasi tipo di fermata.Worker.isCancelled()restituiscetruequando l'opera è stata esplicitamente annullata. B/79632247Aggiungi il supporto per JobParameters#getNetwork() sull'API 28. Questo evento è esposto tramite
Worker.getNetwork().È stato aggiunto
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)in modo da poter applicare forzatamente il numero di job che è possibile inviare aJobScheduleroAlarmManager. In questo modo,WorkManagernon potrà utilizzare tutti gli slot disponibili perJobScheduler.È stato aggiunto l'elemento
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), che aiuta a definire un intervallo diJobSchedulerID job sicuro per l'utilizzo da parte diWorkManager. b/79996760Worker.getRunAttemptCount()restituisce il conteggio delle esecuzioni attuali per un determinatoWorker. B/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)ti consente di accodarePeriodicWorkRequestunivoci. B/79600647WorkManager.cancelAllWork()annulla tutti iWorker. Le librerie che dipendono daWorkManagerpossono eseguire query quando questo metodo è stato chiamato per ultimo utilizzandoWorkManager.getLastCancelAllTimeMillis()per un'ulteriore pulizia dello stato interno.È stato aggiunto
WorkManager.pruneWork()per rimuovere i job completati dal database interno. b/79950952, b/109710758
Cambiamenti del comportamento
- È stato aggiunto un tag implicito per tutti i valori
WorkRequest, ovvero il nome completo della classe perWorker. Consente di rimuovereWorkRequestsenzatago quandoidnon è disponibile. b/109572351
Modifiche che provocano l'interruzione
Worker.WorkerResultrinominato inWorker.Result.Worker.onStoppedora include un parametroisCancelledaggiuntivo, che è impostato sutruequandoWorkerè stato esplicitamente annullato.
7 giugno 2018
Viene rilasciato il navigatore 1.0.0-alpha02.
Navigazione
Cambiamenti del comportamento
FragmentNavigatorora utilizzasetReorderingAllowed(true). B/109826220La navigazione ora Decodifica gli argomenti analizzati dagli URL dei link diretti. B/79982454
Correzioni di bug
È stato corretto un
IllegalStateExceptiondurante la chiamata per navigare dai metodi del ciclo di vita Fragment. b/79632233La navigazione ora dipende dalla libreria di supporto 27.1.1 per correggere lo sfarfallio durante l'uso delle animazioni. B/80160903
È stato corretto un
IllegalArgumentExceptionquando si utilizzava defaultNavHost="true" come frammento figlio. b/79656847È stato corretto un
StackOverflowErrordurante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentExceptionquando si tornava a un grafico nidificato. b/80453447È stato risolto un problema di sovrapposizione dei frammenti durante l'utilizzo di
launchSingleTop. B/79407969La navigazione ora crea il back stack sintetico corretto per i grafici nidificati. B/79734195
NavigazioneUI ora evidenzierà l'elemento corretto quando utilizzi un grafico nidificato come
MenuItem. B/109675998
Modifiche alle API
L'attributo
clearTaskper le azioni e l'API associata inNavOptionsè stato deprecato. B/80338878L'attributo
launchDocumentper le azioni e l'API associata inNavOptionsè stato deprecato. B/109806636
24 maggio 2018
Viene rilasciato WorkManager 1.0.0-alpha02.
Responsabile del lavoro
Correzioni di bug
È stato corretto un
NullPointerExceptionsuState.isFinished(). B/79550068È stato risolto un problema che causava la riprogrammazione di
Workeril giornoApplication.onCreate(). B/79660657Risolto un problema per cui potevi pianificare più lavoro di quanto consentito dal sistema operativo. B/79497378
La pulizia dei wakelock associati a
Workerè stata spostata nel thread in background.Ora l'implementazione di
AlarmManageresegue correttamente la pulizia una volta completati tutti i lavori in sospeso.Sono state corrette le query SQL di pulizia che hanno interessato le lingue diverse dall'inglese. B/80065360
Aggiunto il supporto per
floatinData. B/79443878Data.Builder.putAll()ora restituisce un'istanza diBuilder. B/79699162Altri javadoc e correzioni nella documentazione. B/79691663
Modifiche alle API
Workerpuò reagire all'interruzione. È possibile utilizzareWorker.isStopped()per verificare se unWorkerè stato interrotto.Worker.onStopped()può essere utilizzato per eseguire operazioni di pulizia leggere.L'API
Worker.getTags()restituisce unSetdi tag associati aWorker.Sono stati aggiunti
javax.time.Durationoverload per le API che richiedono una combinazione di durata eTimeUnit. Questa attività è protetta da@RequiresApi(26).WorkManagerestensioni sono state spostate dal pacchettoandroidx.work.ktxal pacchettoandroidx.work. Le estensioni precedenti sono deprecate e verranno rimosse in una versione futura.L'API
Configuration.withExecutor()è deprecata. Usa invece il criterioConfiguration.setExecutor().
16 maggio 2018
Vengono rilasciati il Paging di RxJava2 1.0.0-rc1 e la stanza 1.1.1-rc1. Abbiamo moltissimo
consiglia di utilizzare la stanza 1.1.1-rc1 anziché 1.1.0 se utilizzi le migrazioni.
Room
Risolto un bug per cui la stanza virtuale non gestiva correttamente l'inizializzazione post migrazione b/79362399
Cercapersone
Il paging rxjava2 è in fase di spostamento per la release candidata senza modifiche rispetto alla prima
alfa.
8 maggio 2018
Paging 1.0, Navigazione e WorkManager Alphas, Stanza 1.1, AndroidX
La presentazione 1.0.0 e la Sala 1.1.0 vengono svincolate,
con alpha per due nuovi componenti dell'architettura: Navigazione e WorkManager.
Paging e Stanza virtuale non hanno modifiche dall'ultima release candidati.
Nuova libreria: navigazione
La navigazione fornisce un framework per lo sviluppo di creatività in-app.
per la navigazione. Questa release iniziale è 1.0.0-alpha01.
Nuova libreria: WorkManager
WorkManager semplifica la pianificazione e l'esecuzione di
il lavoro in background garantito e che tenga conto dei vincoli. Questa release iniziale è
1.0.0-alpha01.
AndroidX
I componenti dell'architettura verranno spostati per diventare parte di AndroidX, inclusi i componenti
nomi di pacchetti, nomi di artefatti e dipendenze di altre librerie AndroidX.
Queste vengono rilasciate nella versione 2.0.0-alpha1 per essere utilizzate in combinazione con altre
librerie AndroidX.
Estensioni Kotlin
ViewModel, ReactiveStreams e Sqlite (in precedenza componente "Database" di Room) hanno aggiunto librerie di estensioni Kotlin come parte della release alpha di AndroidX. Nella Inoltre, Navigazione e WorkManager includono i moduli -ktx. Ciascuno di questi puoi trovare i moduli di estensione nella sezione relativa all'aggiunta di componenti.
2 maggio 2018
- Candidato alla release 1.1.0 della stanza
- La stanza
1.1.0-rc1viene svincolata.
Correzioni di bug
- La stanza virtuale è ora compatibile con Kotlin
1.2.40. B/78328708
19 aprile 2018
Candidato per la release di paging
Le chiamate 1.0.0-rc1 e la stanza 1.1.0-beta3 sono svincolate.
Cercapersone
Non abbiamo altri problemi noti o nuove funzionalità in programma per il
Paging della release 1.0.0. Esegui l'upgrade dei progetti per utilizzare 1.0.0-rc1 e
aiutaci a testarla in battaglia in modo da poter spedire un 1.0.0 solido come una roccia.
Non sono state apportate modifiche in questa release, è uguale a 1.0.0-beta1.
Room
Correzioni di bug
- Correggi l'errore di compilazione quando un POJO Kotlin fa riferimento a un'entità di relazione che è stato definito in Java b/78199923
5 aprile 2018
Vengono rilasciati la stanza 1.1.0-beta2, il Paging 1.0.0-beta1 e il Paging RxJava 1.0.0-alpha1.
Il paging sarà in versione beta per un breve periodo prima di procedere alla release candidato.
Non stiamo pianificando ulteriori modifiche all'API per il seguente paese: Paging 1.0 e la soglia per qualsiasi modifica all'API è molto elevata.
Il supporto di Alpha RxJava2 per il paging viene rilasciato come modulo facoltativo separato (android.arch.paging:rxjava2:1.0.0-alpha1)
e verrà sottoposto temporaneamente al controllo
delle versioni fino alla stabilizzazione.
Questa nuova libreria fornisce un'alternativa RxJava2 a LivePagedListBuilder, in grado di creare
Observable e Flowable, con Scheduler anziché 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();
Cercapersone
Nuove funzionalità
RxPagedListBuilderè stato aggiunto tramite il nuovo artefattoandroid.arch.paging:rxjava2.
Modifiche alle API
Modifiche all'API per chiarire il ruolo degli esecutori nei builder:
setBackgroundThreadExecutor()rinominato insetFetchExecutor()(inPagedList.BuildereLivePagedListBuilder)setMainThreadExecutor()è stato rinominato insetNotifyExecutor()(inPagedList.Builder).
È stato corretto il problema di privato
PagedList.mCallbacksmembro.
Correzioni di bug
LivePagedListBuilderattiva il caricamento inizialePagedListsull'esecutore specificato, anziché il pool di thread di I/O di Arch Components.È stato corretto il comportamento di invalidazione nei wrapper
DataSourceinterni (utilizzati per implementareDataSource.map, nonché il caricamento diPositionalDataSourcedisattivato con segnaposto) b/77237534
Room
Correzioni di bug
È stato corretto un bug critico nelle implementazioni Rx
SingleeMaybedella stanza in cui ricicla la query in anticipo, causando problemi se ne aggiungi più di una osservatore alle istanzeSingleoMayberestituite. B/76031240RoomDatabase.clearAllTables non
VACUUMil database se viene chiamato in una transazione. b/77235565
21 marzo 2018
Vengono rilasciati la stanza 1.1.0-beta1, la funzionalità di ricerca delle pagine 1.0.0-alpha7 e i cicli di vita 1.1.1.
Room
Modifiche alle API
- In base al feedback della revisione dell'API,
@RawQuerynon accetta più di trasmettereStringcome parametro di query. Devi utilizzare SupportSQLiteQuery. (vedi SimpleSQLiteQuery per creare facilmente un'istanza di SupportSQLiteQuery con supporto per argomenti). - Il metodo fallbackToDestructiveMigrationFrom di RoomDatabase.Builder ora accetta
vararg intanzichévararg Integer.
Correzioni di bug
RoomDatabase.clearAllTables ora tenta di restituire lo spazio al sistema operativo impostando un checkpoint WAL ed eseguendo
VACUUMil database.@RawQueryora accetta qualsiasi Pojo per la proprietàobservedEntities, purché il Pojo faccia riferimento a una o più entità tramite i suoi campiEmbeddedoRelation. B/74041772Paging: l'implementazione DataSource di Room ora gestisce correttamente le dipendenze multitabella (come relazioni e join). In precedenza, questi ultimi non attivavano nuovi risultati o non venivano compilati. B/74128314
Cicli di vita
Una sola piccola modifica: android.arch.core.util.Function è stata spostata da arch:runtime a arch:common. Ciò consente di utilizzarlo senza la dipendenza del runtime, ad esempio in paging:common qui sotto.
lifecycle:common è una dipendenza di lifecycle:runtime, quindi questa modifica non influisce direttamente su lifecycle:runtime, ma solo sui moduli che dipendono direttamente da lifecycle:common, come avviene nel Paging.
Cercapersone
La funzionalità di ricerca in pagine 1.0.0-alpha7 viene rilasciata insieme a Cicli di vita 1.1.1. Poiché la funzione Paging alpha7 dipende dallo spostamento della classe Function sopra menzionata, dovrai aggiornare la dipendenza lifecycle:runtime in android.arch.lifecycle:runtime:1.1.1.
È prevista la release finale di Paging alpha7 prima che diventi beta.
Modifiche alle API
- Gli oggetti
DataSource.LoadParamshanno ora un costruttore pubblico, mentre gli oggettiDataSource.LoadCallbacksono astratti. In questo modo è possibile eseguire il wrapping di unDataSourceo testare direttamente unDataSourcecon un callback di simulazione. b/72600421 - Mapper per DataSource e DataSource.FA
map(Function<IN,OUT>)ti consente di trasformare, aggregare o decorare i risultati caricati da unDataSource.mapByPage(<List<IN>,List<OUT>>)abilita lo stesso per l'elaborazione batch (ad esempio, se gli elementi caricati da SQL devono eseguire query aggiuntive su un database separato, che può essere eseguito come batch).
PagedList#getDataSource()aggiunto come metodo pratico b/72611341- Tutte le classi deprecate sono state rimosse dall'API, inclusi i resti del pacchetto
recyclerview.extensionseLivePagedListProvider. DataSource.Factoryè stato modificato da interfaccia a classe astratta per abilitare la funzionalità della mappa.
Correzioni di bug
- I Builder sono stati modificati in finale. B/70848565
- L'implementazione della stanza
DataSourceè ora corretta per gestire le query su più tabelle. Questa correzione è contenuta nella stanza 1.1.0-beta1, vedi sopra. - È stato corretto un bug per cui
BoundaryCallback.onItemAtEndLoadednon veniva richiamato perPositionalDataSourcese i segnaposto sono abilitati e la dimensione totale è un multiplo esatto delle dimensioni della pagina.
2 marzo 2018
La stanza 1.1.0-alpha3 viene svincolata. Questa è l'ultima release alpha pianificata per
Stanza 1.1.0.
Modifiche alle API
addObservereremoveObserverdi invalidationTracker sono ora sincroni e devono essere chiamati su un thread non UI. In questo modo si evita che alcune condizioni di gara siano condotte durante l'osservazione delle tabelle.È disponibile un nuovo metodo
clearAllTables()in RoomDatabase che troncherà tutti i contenuti della tabella. b/63807999SupportSQLiteQueryora dispone di un metodogetArgCount()che restituisce il numero dei parametri di query. B/67038952
Correzioni di bug
Ora
@RawQueryè supportato correttamente per le query di impaginazione. b/72600425La stanza ora assegna i nomi corretti a
Daodi classi per evitare conflitti di nomi quando Due o più interfacceDaosono classi interne nello stesso pacchetto e hanno lo con lo stesso nome. b/73536380I tipi di campo generici nei campi
Pojovengono analizzati correttamente come membri dell'estensione . b/73534868Parametri di ricerca in
Daointerfacce ereditati dalla dipendenza gli artefatti vengono ora analizzati correttamente. b/68118746Le query generate per
@Relationora eseguono l'escape dei nomi dei campi in modo corretto. b/70925483
27 febbraio 2018
Il paging di 1.0.0-alpha6 viene rilasciato insieme alla release 27.1.0 di Support Library.
ListAdapter e alcune classi correlate sono state spostate dalla libreria di paging direttamente a Recyclerview, insieme ad alcune rinominazioni per rendere più chiara la funzione di alcune classi. È probabile che questa versione alpha del paging sia l'ultima ad avere apportato modifiche significative che provocano un'interruzione dell'API.
Modifiche alle API
- Classi spostate in recyclerview-v7:
ListAdapter
- Classi rinominate e spostate in recyclerview-v7:
ListAdapterHelper->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->DiffUtil.ItemCallback
- Classi rinominate all'interno del runtime di paging:
PagedListAdapterHelper->AsyncPagedListDiffer
Le classi che sono state spostate si sono rivelate utili insieme a RecyclerView, indipendentemente dalla Paging Library. Ciò significa che possono essere utilizzate senza dipendere da una release alpha di Paging, ma significa anche che le app che usano il Paging devono eseguire contemporaneamente l'upgrade ad Alpha 6 e alla Libreria di supporto 27.1.0.
** Guida alla migrazione per Paging Alpha6: **
- Aggiorna le dipendenze di paging e recyclerview a
android.arch.paging:runtime:1.0.0-alpha6ecom.android.support:recyclerview-v7:27.1.0- .
- queste operazioni devono essere eseguite contemporaneamente, poiché ListAdapter è stato spostato da Paging a RecyclerView
- Aggiorna tutti i riferimenti di
ListAdapterHelperinAsyncListDiffer- .
getItem(index)/getItemCount()sono stati rimossi a favore del pattern di chiamata digetCurrentList().getItem(index)egetCurrentList().size(), che sono più espliciti.
- Aggiorna tutti i riferimenti di
ListAdapterConfiginAsyncDifferConfig - Aggiorna tutti i riferimenti di
DiffCallbackinDiffUtil.IttemCallback - Aggiorna tutti i riferimenti di
PagedListAdapterHelperinAsyncPagedListDiffer - Aggiorna i riferimenti di
setList()insubmitList()- .
- rinominata per chiarire la natura asincrona delle differenze di elenco
Correzioni di bug
- È stato risolto il problema relativo al passaggio della posizione iniziale errata al caricamento iniziale durante i segnaposto sono disabilitate. B/73513780
15 febbraio 2018
La stanza 1.1.0-alpha2 viene svincolata.
Nuove funzionalità
La stanza virtuale ora supporta l'apertura del database in modalità di logging write-forward. In questa modalità, le operazioni di scrittura non bloccheranno più le query di lettura. Anche se consuma più memoria (a causa di più connessioni), di solito questa modalità più velocemente. Per impostazione predefinita, la stanza virtuale utilizzerà WAL se il dispositivo è di almeno
API 16e non è un dispositivo con memoria insufficiente. Puoi controllare questo comportamento utilizzandosetJournalMode()inRoomDatabase.Builder. B/67757002Assistenza Guava: ora la stanza supporta Guava di ritorno
Optional<T>oListenableFuture<T>inDAOquery. Per usareListenableFuture<T>, devi importareguavaartefatto da Room (android.arch.persistence.room:guava:1.1.0-alpha2).La stanza virtuale ora supporta la restituzione di
java.util.Optional<T>daDAOquery.I metodi dell'interfaccia con implementazioni predefinite sono ora supportati in
@Transactionmetodi inDAOclassi. Questa operazione è valida sia perJava 8Kotlin. B/72416735
Correzioni di bug
I costruttori con
@Relationnon causeranno un errore di compilazione se: e un altro costruttore utilizzabile. b/72884434I nomi delle tabelle con caratteri di escape
'nei metodi@Queryora contengono caratteri di escape corretti per il tracker delle invalidazioni. B/72366965La stanza virtuale ora utilizza le annotazioni
@Metadatadi Kotlin per leggere la struttura del corso durante l'elaborazione dell'annotazione. Ciò significa che, anche se un pojo viene ereditato da , i nomi dei parametri del costruttore possono essere letti correttamente. B/67181813Il problema relativo alla ricerca dei percorsi di migrazione del downgrade è stato risolto. B/72153525
Ora i tipi di colonna non predefiniti vengono gestiti correttamente quando si esegue la migrazione da un il database esistente nella stanza. B/71953987
La stanza virtuale ora gestisce correttamente i campi
boolean?permanenti nelle classi Kotlin. b/72786402
22 gennaio 2018
Vengono rilasciati i cicli di vita 1.1.0, la stanza 1.1.0-alpha1 e le chiamate in pagine 1.0.0-alpha5.
Ciclo di vita 1.1.0
Modifiche alla presentazione
Ora sono disponibili nuove dipendenze molto più piccole:
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- Gli elementi
LifecycleActivityeLifecycleFragmentdeprecati sono stati rimossi. UtilizzaFragmentActivity,AppCompatActivityo assistenzaFragment. @NonNullannotazioni sono state aggiunte aViewModelProviderseViewModelStores- Il costruttore
ViewModelProvidersè deprecato. Utilizza direttamente i relativi metodi statici ViewModelProviders.DefaultFactoryè stato deprecato. UtilizzaViewModelProvider.AndroidViewModelFactory- Il metodo
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)statico è stato aggiunto per recuperare unFactorystatico adatto per la creazione di istanzeViewModeleAndroidViewModel.
Stanza 1.1.0-alpha1
Nuove funzionalità
RawQuery: questa nuova API consente ai metodi@Daodi ricevere il codice SQL come parametro di query b/62103290, b/71458963fallBackToDestructiveMigrationsFrom: questa nuova API inRoomDatabase.Builderconsente controllo più granulare su cui vengono eseguite le migrazioni distruttive delle versioni iniziali dello schema consentito (rispetto a fallbackToDestructiveMigration) B/64989640- Ora Room supporta solo le API di paging più recenti (alpha-4+), eliminando il supporto per le API deprecate
LivePagedListProvider. Per usare la nuova versione alpha della stanza virtuale, dovrai usare il pagingalpha-4o superiore e passa daLivePagedListProvideraLivePagedListBuilderse non l'hai ancora fatto.
Correzioni di bug
- Supporto migliorato per i tipi Kotlin Kapt. B/69164099
- L'ordine dei campi non invalida più lo schema. B/64290754
Paging 1.0.0-alpha5
Correzioni di bug
- Risolvere i problemi di caricamento delle pagine quando i segnaposto sono disattivati b/70573345
- Logging aggiuntivo per il rilevamento del bug LegalArgumentException b/70360195 (e correzione speculativa lato stanza)
- Correzioni del codice di esempio Javadoc b/70411933, b/71467637
11 dicembre 2017
Il paging di alpha4-1 è stato rilasciato. Questa è una piccola release di correzione di bug per Paging alpha 4.
Correzioni di bug
- Non verificare la presenza di origini dati non valide nei parametri di callback. B/70353706, B/70360195
7 dicembre 2017
Viene rilasciato il Paging alpha4, con aggiunte e modifiche significative, per lo più
rete di targeting e casi d'uso rete + database.
Modifiche alle API
DataSourceè ora un'API asincrona, per semplificare il paging direttamente dalla rete:- Singolo punto di ingresso per dimensione e dati iniziali
- Supporta i nuovi tentativi di rete mantenendo la richiamata e inviando più tardi
- I callback Threadsafe consentono il caricamento asincrono per la creazione di una singola rete
è stato eseguito il backup di
PagedListnel thread dell'interfaccia utente. - Comportamento più chiaro degli errori relativi ai parametri del caricamento iniziale
Il nuovo nome di
TiledDataSourceèPositionalDataSourceper riflettere la sua l'indicizzazione in base alla posizione e il fatto che non si affianca quando i segnaposto vengono disattivata.PageKeyedDataSourceaggiunto per supportare i token successivi/precedenti incorporati in viene caricata la pagina di rete.KeyedDataSourcerinominato inItemKeyedDataSourceper rendere la differenza.LivePagedListBuildereDataSource.FactorysostituisconoLivePagedListProvider. Lo strumento di creazione offre le stesse funzionalità personalizzazione e predefiniti più semplici. Il produttore consente la generazione diDataSourceper rimanere indipendenti daLiveData.PagedList.BoundaryCallbackaggiunto per il caso d'uso del database + della rete.Il costruttore
PagedList.BuilderrichiedeDataSource+PagedList.Config, ora più simile aLivePagedListBuildere consente l'operatore diamante in linguaggio Java o tipi dedotti in Kotlin.PagedList.getConfig()aggiunto, poiPagedList.Configha un membro pubblico proprietà.KeyedDataSource.loadBefore()non prevede più che i risultati vengano annullati.PagedListAdapter.onCurrentListChanged()aggiunto per ascoltare aggiornamenti su cui L'elenco di pagine è in fase di visualizzazione.
Correzioni di bug
- È stata corretta l'eccezione IndexOutOfBounds in PagedListAdapter(Helper) b/67883658
1.0.0 - 6 novembre 2017
Tutti i componenti principali (ad eccezione di Paging) ora sono 1.0.0. È esattamente lo stesso
release come rc1, tranne per una modifica alla raccolta reactivestreams.
Correzioni di bug
- Ora
LiveDataReactiveStreamsimplementa correttamente la specifica Reactive Streams. b/67999342
Release Candidate - 18 ottobre 2017
Tutti gli artefatti principali (tranne il paging) ora sono 1.0.0-rc1.
Non abbiamo altri problemi noti o nuove funzionalità in programma per il
Release 1.0.0. Esegui l'upgrade dei progetti per utilizzare 1.0.0-rc1 e aiutaci
per testarlo in battaglia in modo da poter spedire un 1.0.0 solido come una roccia.
Cambiamento del comportamento
- Con questa release, ora viene spedito
Lifecycle.Event#ON_STOPquando ChiamataonSaveInstanceState(precedente, era appena stata contrassegnata comeCREATEDsenza spedireON_STOP). Puoi scoprire di più nel Documentazione sui cicli di vita.
Correzioni di bug
Stanza:
- La stanza ora dipende dall'ultimo artefatto xerial che corregge
OutOfMemoryproblemi durante la compilazione. b/62473121 - Ora i metodi di
Querypossono essere annotati con@Transaction. Per informazioni dettagliate, consulta la documentazione di riferimento su@Transaction. b/65112315 StringUtilcorso nella stanza virtuale è stato rimosso dal pubblico (non è mai stata intesa come API pubblica).
- La stanza ora dipende dall'ultimo artefatto xerial che corregge
Cicli di vita:
LiveDatafunziona correttamente quando l'attività è parzialmente coperta nell'API < 24, b/65665621I metodi
OnLifecycleEventnelle classi padre sono ora chiamati correttamente o un se non è possibile, viene stampato un avviso durante la compilazione. b/63474615Il ciclo di vita ora presenta
WeakReferenceLifecycleOwner per evitare la perdita di LifecycleOwner se il ciclo di vita rimane in memoria più a lungo del solito (questa è solo una precauzione, devi comunque fare attenzione a non far trapelareLifecycle).
9 ottobre 2017
Viene rilasciato il paging alpha-3; il che lo rende compatibile con beta 2
di ciclo di vita e stanza.
Correzioni di bug
- Documentazione di paging migliorata.
5 ottobre 2017
Tutti gli artefatti principali (tranne il paging) ora sono beta 2.
In questa release non è disponibile una nuova versione di Paging.
Correzioni di bug
Cicli di vita:
- Ora
LiveDataReactiveStreamsannulla correttamente l'iscrizione alla fonte publisher quandoLiveDatanon è attivo. B/62609183 - Gli eventi del ciclo di vita vengono propagati correttamente alle classi principali quando la classe principale proviene da un altro modulo. B/63474615
- LiveData gestisce correttamente gli osservatori quando annullano l'iscrizione durante la creazione degli abbonamenti. B/66337741
FullLifecycleObserverper l'artefatto del linguaggio Java 8 è ora disponibile nell'albero delle dipendenze. b/66525578Per ProGuard, aggiungi le righe seguenti al file ProGuard. (Questo non sarà necessario quando viene spedita la versione 1.0.0)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
- Ora
Stanza:
- La stanza virtuale ora stampa un errore al momento della compilazione quando il Pojo restituito in un
Il metodo
@Queryha un campo@NonNullche non corrisponde a nessuno dei nella risposta alla query. Se il campo è@Nullable, significa che solo la stanza visualizza un avviso. b/67115337 - La stanza virtuale ora convalida gli indici nelle versioni più recenti del sistema operativo. B/63132683
- La stanza sceglie il costruttore no-arg per impostazione predefinita se sono con costruttori corrispondenti in un Pojo. B/67353427
- Le chiavi primarie a colonna singola possono essere
Nullablese si tratta di unIntegeroLong. B/67086876 - Il tracker di invalidazione gestisce correttamente il rientro in modalità di test. B/65471397
- La stanza ora verifica la presenza di caratteri non validi in colonna e tabella
nomi al momento della compilazione (caratteri non validi:
`,"). B/64749111
- La stanza virtuale ora stampa un errore al momento della compilazione quando il Pojo restituito in un
Il metodo
21 settembre 2017
Con questa release, tutti i moduli dei componenti dell'architettura raggiungono almeno beta 1
(tranne la nuova Libreria di paging che è alpha 2).
Non sono in programma altre modifiche all'API. Potrebbero verificarsi modifiche non pianificate, ma
bar per la modifica di qualsiasi API prima che 1.0.0 sia stabile è molto elevato ed è improbabile che si verifichi.
- Ciclo di vita e LifecycleFragment verrà rimosso prima della stabilità di
1.0.0. Loro non sono necessari se si utilizza la libreria di supporto26.1.0o versioni successive.
A differenza della fase alpha, la fase beta è programmata per una durata molto breve.
Modifiche alla versione
- Le estensioni del ciclo di vita e le stanze virtuali ora sono
beta 1 - Il paging adesso è
alpha 2 - Nessuna modifica nei cicli di vita (tempo di esecuzione, comune) e Arch Core (comune). Entrambi questi elementi
sono le versioni
1.0.0dal 13 settembre.
Nuovi artefatti
I cicli di vita ora hanno un nuovo artefatto chiamato
common-java8. Questo artefatto contiene una nuova interfaccia chiamata DefaultLifecycleObserver; quale presenta implementazioni predefinite per tutti i metodi del ciclo di vita. Se utilizzi il linguaggio Java 8, dovresti preferire questo artefatto alle annotazioni.- A causa di un bug in
beta1, devi aggiungere una dipendenza esplicita suandroid.arch.lifecycle:common:1.0.1modulo per utilizzare il nuovo artefattocommon-java8. Il problema verrà risolto trabeta2.
- A causa di un bug in
Modifiche alla presentazione
android.arch.persistence.room.dbè stato spostato inandroid.arch.persistence.dbandroid.arch.persistence.room.db-implè stato spostato e rinominato inandroid.arch.persistence.db-framework
Entrambi questi elementi sono già una dipendenza dalla stanza, quindi a meno che tu non li utilizzi direttamente, non dovresti cambiare nulla nei file di build.
Modifiche alle API
Stanza:
- L'annotazione @ColumnInfo ora supporta l'impostazione di regole di confronto nella colonna. B/62007004
- I campi
transientvengono ora ignorati per impostazione predefinita a meno che non siano annotati con@ColumnInfo.@Embeddedo@Relation. B/62600692 - Le chiavi primarie devono essere annotate con
@NonNull, a meno che non vengano generate automaticamente. b/64292391- Questa modifica potrebbe richiedere una migrazione dello schema. Ci scusiamo per il disagio.
- È stata aggiunta una nuova annotazione di convenienza (@Transaction) che
sostituisce un metodo
DAOe lo esegue all'interno di una transazione.
Supporto database SQLite:
- Modifiche all'API nella configurazione del database. B/65349673 B/65499876
Paging:
- Documentazione di paging migliorata con più esempi e annotazioni nei thread.
Correzioni di bug
- Stanza:
- Le stringhe multilinea Kotlin nei metodi
@Queryvengono gestite correttamente. b/65809374
- Le stringhe multilinea Kotlin nei metodi
- Paging:
- L'artefatto di impaginazione non dipende più da junit. B/65690261
1.0.0 Alpha 9-1 - 13 settembre 2017
Questa è una release principale in cui gli artefatti principali del ciclo di vita (runtime, comune) e arch core (comune)
raggiungi la versione stabile 1.0.0.
Insieme a questa modifica, Support Library 26.1.0 ora dipende da queste librerie. Sia AppCompatActivity che Support Fragment ora implementi l'interfaccia LifecycleOwner.
Questa release dipende anche dalla libreria di supporto 26.1.0 per poter usufruire della nuova integrazione.
Nuova raccolta: Pagine
Questa release include anche una nuova libreria chiamata Paging, che consente di caricare facilmente
di set di dati in un RecyclerView in blocchi quando necessario. Paging esce come alpha1
e avrà un proprio ciclo di rilascio.
Modifiche alle API
- I seguenti corsi sono deprecati e verranno rimossi in una versione futura:
Correzioni di bug
Le classi generate sono ora annotate con
@Generatedse l'app ha l'annotazione nel classpath. b/35754819È stato corretto il bug di confronto con l'osservatore di MediatorLiveData. B/64413274
Le query SQLite
WITHora sono supportate con [LiveData]. [ref-LiveData] B/62510164È stato corretto un bug per cui InvalidationTracker non inviava l'elenco corretto se più di una tabella viene osservata. B/65099281
È stato corretto un bug per cui Room generava file diversi su Windows. B/64470691
Ora sono supportati LifecycleObserver nel pacchetto principale. B/62310817
1.0.0 Alpha 9 - 16 agosto 2017
Correzioni di bug
- È stato corretto un bug in LiveData, a causa del quale il secondo Observer è stato ignorato quando il primo è stato rimosso dal suo metodo
onChanged. b/64285805
1.0.0 Alpha 8 - 1° agosto 2017
Cambiamenti del comportamento
- Il vincolo
NOT NULLviene aggiunto per le colonne di tipi primitivi o di colonne annotato con NonNull. Ciò modifica la struttura del Pertanto, se utilizzi già i componenti di architettura alpha 7 o precedenti, devi implementare una migrazione se vuoi conservare i dati oppure utilizzarefallbackToDestructiveMigration()nel builder. b/62007004
Modifiche alle API
- SupportSQLiteProgram ora estende AutoCloseable. b/63131997
1.0.0 Alpha 7 - 26 luglio 2017
Correzioni di bug
È stato corretto il bug critico nel metodo LifecycleRegistry
removeObserver, che ha provocato l'interruzione di una lettura LifecycleObserver.Risoluzione dei problemi di invalidationTracker per i database personalizzati b/63162311
1.0.0 Alpha 6 - 25 luglio 2017
Cambiamenti del comportamento
L'ordine delle chiamate LifecycleObserver è stato modificato. In precedenza, gli osservatori venivano sempre chiamati in ordine di aggiunta: Se l'elemento
observer1viene aggiunto prima del giornoobserver2, riceverà il giornoON_CREATEe tutti gli altri eventi precedenti al giornoobserver2. Questo non vale più per gli eventi di distruzione, per cui gli osservatori sono chiamati nell'ordine inverso di addizione. Di conseguenza, il comportamento attuale è: seobserver1viene aggiunto prima diobserver2,ON_CREATEviene inviato prima aobserver1e poi aobserver2(lo stesso accade perON_STARTeON_RESUME), ma l'eventoON_PAUSEviene inviato prima aobserver2e solo allora aobserver1(lo stesso perON_STOPeON_DESTROY).La stanza virtuale genera un'eccezione se la migrazione non è presente. In precedenza, Room cancellava semplicemente il database, ma ora si arresta in modo anomalo. Gli sviluppatori possono attivare il comportamento di cancellazione chiamando l'API Builder. B/63872392
Modifiche alle API
Metodo
fallbackToDestructiveMigration()aggiunto aRoomDatabase.Buildera svuota il database se manca la migrazione. b/63872392I componenti dell'architettura ora dipendono dalla libreria di supporto 26.0.0
Correzioni di bug
Gestione fissa di @Relation nidificata in @Embedded. b/63736065
Correzioni delle migrazioni di test per le tabelle con chiave primaria incrementata automaticamente. B/63393618
Ora le @Query che eseguono le query DELETE o UPDATE ricevono correttamente gli argomenti. B/63872538
Ora i componenti ViewModel vengono conservati, quando il frammento proprietario si trova nel backstack e la modifica alla configurazione avviene due volte. B/38445801
1.0.0 Alpha 5 - 18 luglio 2017
Modifiche alle API
È stato aggiunto un nuovo metodo di callback a
RoomDatabase.Builderper osservare quando viene creato o aperto un database. b/62699324@Query ora potrebbe restituire RxJava
MaybeoSingle. B/62231019
Devi dipendere dall'artefatto android.arch.persistence.room:rxjava2 per aggiungere il supporto RxJava a Room.
Correzioni di bug
Sono state corrette le query
@Deletesenza parametri. b/63608092Controlli del tipo di stanza fissi per getter e setter. B/63733651
1.0.0 Alpha 4 - 11 luglio 2017
Modifiche alle API
È stato aggiunto un nuovo metodo pratico (
runInTransaction()) a RoomDatabase.Ora i metodi
@Insert,@Deletee@Updatepossono avere parametri di diversi tipi di entità. b/62682405
Correzioni di bug
È stata corretta la gestione di
byte[]nei metodi@Dao. B/62460045Il controllo della migrazione nella stanza virtuale ora utilizza il confronto senza distinzione tra maiuscole e minuscole. B/62875382
È stata corretta la configurazione di ProGuard per l'artefatto cicli di vita. B/62113696
1.0.0 Alpha 3 - 15 giugno 2017
Modifiche alle API
@OnLifecycleEventora supporta un solo parametro evento. Si tratta di un cambiamento nella preparazione al supporto di Java 8 per consentirci di eseguire la migrazione si interfacciano con i metodi predefiniti in futuro. In relazione a questo cambiamento, i metodi annotati@OnLifecycleEvent(ON_ANY)possono ricevere un secondo parametro di tipoEvent(il primo parametro èLifecycleOwner). Per informazioni dettagliate, consulta la documentazione sul ciclo di vita.Le classi
LifecycleActivityeLifecycleFragmentsono state spostate nell'elementoandroid.arch.lifecycle:extensions.MigrationTestHelper riceve l'istanza Instrumentation anziché
Contextper poter leggere lo schema dagli asset di test e creare del database nel contesto dell'applicazione.Annotazioni
@Insert,@Deletee@Updatenei metodi@DAOora può avereIterablecome tipo di parametro. b/62259820
Correzioni di bug
I metodi sostituiti con eventi del ciclo di vita non vengono più chiamati più volte.
Ora più parametri
INvengono gestiti correttamente. b/62608681Ora le classi DAO astratti possono avere un costruttore che riceve
@Databasein esecuzione in un'istanza Compute Engine. b/38488747Gli utenti di
DAOora possono avere una superclasse/interfaccia con parametri di tipo. b/62103620
1.0.0 Alpha 2 - 2 giugno 2017
Modifiche alle API
Il callback invalidationTracker ora riceve l'elenco dei nomi delle tabelle modificati. (b/38468740)
È stata ridotta la superficie dell'API per la classe SupportSQLiteDatabase. (b/38481640)
Correzioni di bug
- File ProGuard per i cicli di vita. (B/62113696)
- Perdita di dati con i convertitori dei tipi. (b/62100716)
- Consenti la restituzione di
Long[]da@Insertquery.
1.0.0 Alpha 1 - 17 maggio 2017
MinSDK: 14
Avvertenze generali
Anche se abbiamo effettuato molti test prima del lancio, i componenti dell'architettura sono attualmente in versione alpha. Se stai creando un'app di produzione, tieni presente che l'API cambierà prima della release 1.0 e potrebbe non essere completamente affidabile. Se non hai dimestichezza con il debug dei problemi nelle librerie che utilizzi, ti consigliamo di provare prima i componenti di architettura nei progetti collaterali.
Sconsigliamo di eseguire la migrazione a tutti oggi. Sarà disponibile una guida alla migrazione per la versione 1.0 dei componenti dell'architettura.
Limitazioni e problemi noti
- I cicli di vita
FragmenteActivityCompatnella Libreria di supporto non implementano ancora l'interfacciaLifecycleOwner. Lo faranno quando Architecture Components raggiungerà la versione 1.0.0.