15 gennaio 2019
Responsabile lavoro
WorkManager 1.0.0-beta02
viene rilasciato. Questa release contiene alcune correzioni di bug.
Correzioni di bug
- Risolto un caso 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
ConcurrentModificationException
sui dispositivi con Android 5.1 (livello API 22) o versioni precedenti. b/121345393 - È stata corretta l'errata esecuzione del lavoro quando i vincoli non vengono soddisfatti sui dispositivi con Android 5.1 (livello API 22) o versioni precedenti. b/122578012
- Gestione del completamento del lavoro ottimizzata per essere più rapida in alcuni casi limite. b/122358129
- È stata aggiunta una modifica per risolvere le potenziali condizioni di gara tra più istanze di
LiveData
utilizzate da WorkManager. - Spostata per utilizzare la dipendenza
Room
1.1.1
anziché1.1.1-rc01
; queste versioni sono identiche. b/122578011
19 dicembre 2018
Responsabile lavoro
WorkManager 1.0.0-beta01
viene rilasciato. Questa release non contiene modifiche all'API. In futuro, WorkManager dovrebbe mantenere l'API stabile fino alla versione successiva, a meno che non ci sia un problema critico. Questa release contiene alcune correzioni di bug.
Correzioni di bug
- I figli che in precedenza avevano annullato il lavoro dei genitori non potranno più essere eseguiti. b/120811767
- Classi di logging inizializzate correttamente (visualizzate principalmente durante i test).
18 dicembre 2018
Navigazione
La navigazione 1.0.0-alpha09
è stata rilasciata. Questa release contiene modifiche all'API che provocano errori; consulta la sezione Modifiche che provocano un errore di seguito.
Abbiamo scelto di non continuare a sviluppare l'artefatto android.arch.navigation:navigation-testing
. Anche se si è rivelato utile per i test interni di NavController
, consigliamo vivamente di utilizzare strategie di test alternative, come una simulazione dell'istanza NavController
al fine di verificare che vengano eseguite le chiamate navigate()
corrette. Questo approccio è discusso in dettaglio nella conferenza Single Activity al AndroidDevSummit 2018 e lavoreremo su un'ulteriore documentazione specifica relativa ai test con Navigazione.
Nuove funzionalità
- Gli elementi
MenuItem
conmenuCategory="secondary"
non verranno più inseriti nello stack posteriore se utilizzati con i metodiNavigationUI
. b/120104424 AppBarConfiguration
ora consente di impostare un'istanzaOnNavigateUpListener
di riserva che verrà chiamata quandonavController.navigateUp()
restituiscefalse
. b/79993862 b/120690961
Modifiche che provocano un errore
- Quando utilizzi un
<argument>
con unargType="reference"
, Navigazione non analizza più il riferimento, ma fornisce l'ID risorsa non elaborato. b/111736515 - Per impostazione predefinita,
onNavDestinationSelected()
torna alla destinazione iniziale del grafico di navigazione, rendendolo coerente con i metodisetup
. AggiungimenuCategory="secondary"
aMenuItem
per evitare di aprire lo stack posteriore. aosp/852869 - I metodi
fromBundle()
delle classiArgs
generate ora utilizzano un valore non nullBundle
anziché un valore nullBundle
aosp/845616
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argType
corretto anziché sempre come stringhe b/110273284 - La navigazione ora esporta correttamente le risorse pubbliche b/121059552
- Safe Args è ora compatibile con il plug-in Android per Gradle 3.4 Canary 4 e versioni successive b/119662045
12 dicembre 2018
Responsabile lavoro
WorkManager 1.0.0-alpha13
viene rilasciato. Questa release contiene una piccola modifica all'API che sarà utile per alcuni utenti di Kotlin.
Modifiche alle API
androidx.work.Result
è stata spostata in una classe interna diListenableWorker
. In questo modo si evitano conflitti di refactoring con la classeResult
di primo livello di Kotlin. Questa è una modifica che provoca un errore all'API. b/120564418
Modifiche che provocano un errore nell'API
androidx.work.Result
è stata spostata in una classe interna diListenableWorker
.
6 dicembre 2018
Cercapersone
Paging di 2.1.0-rc01
senza modifiche rispetto a 2.1.0-beta01
.
Navigazione
La navigazione 1.0.0-alpha08
è stata rilasciata. Questa release contiene modifiche all'API che provocano errori; consulta la sezione Modifiche che provocano un errore di seguito.
Nuove funzionalità
- Ora le etichette di destinazione, se utilizzate con i metodi
NavigationUI
, sostituiranno automaticamente le istanze di{argName}
inandroid:label
con l'argomento corretto b/80267266 - La navigazione ora dipende dalla Support Library 28.0.0 b/120293333
Modifiche che provocano un errore
OnNavigatedListener
è stato rinominato inOnDestinationChangedListener
b/118670572OnDestinationChangedListener
ora passa ancheBundle
degli argomenti aosp/837142- Gli attributi
app:clearTask
eapp:launchDocument
e i relativi metodi associati sono stati rimossi. Utilizzaapp:popUpTo
con la radice del grafico per rimuovere tutte le destinazioni dallo stack posteriore. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di impostare qualsiasi flagIntent.FLAG_ACTIVITY_
aosp/828140- Il nome di
NavController.onHandleDeepLink
è stato rinominatohandleDeepLink
aosp/836063 - Molti metodi e classi non pensati per le sottoclassifiche, come
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, sono stati creatifinal
aosp/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
, in modo da delegare più facilmente la creazione dei frammenti a unaFragmentFactory
. B/119054429 - Il costruttore per
NavGraphNavigator
non richiede più unContext
aosp/835340 - NavigatorProvider è ora
una classe, non un'interfaccia. Il
NavigatorProvider
restituito dagetNavigatorProvider()
non ha modificato la sua funzionalità. aosp/830660 - L'utente
NavDestination.navigate()
è stato rimosso. Chiamanavigate()
sul servizioNavigator
. aosp/830663 - Refactoring significativo di
Navigator
, che elimina la necessità diOnNavigatorNavigatedListener
e fa sì chenavigate
restituisca il valoreNavDestination
raggiunto. Navigator
istanza non può più inviare eventi pop aNavController
. Valuta l'utilizzo di un elementoOnBackPressedCallback
per intercettare le pressioni del pulsante Indietro e chiamarenavController.popBackStack()
. 833716
Correzioni di bug
popUpTo
ora funziona regolarmente quando la destinazione è un elemento<navigation>
b/116831650- Risolto un numero di bug che generavano una
IllegalArgumentException
quando si utilizzavano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - L'attributo
dataPattern
delle destinazioni<activity>
ora completerà gli argomenti da argomenti non stringa chiamandotoString()
b/120161365
Arg sicuri
- Safe Args supporta gli oggetti Serializzabili, inclusi i valori Enum. I tipi di enum
possono 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 annotazioni
@Override
ove opportuno b/117145301
5 dicembre 2018
Responsabile lavoro
WorkManager 1.0.0-alpha12
viene rilasciato. Questa release contiene alcune modifiche che provocano un errore nell'API; consulta la sezione Ultime modifiche all'API di seguito. È probabile che questa versione venga rilasciata come prima versione beta. alpha12
contiene inoltre numerosi aggiornamenti alla documentazione.
Modifiche alle API
- Un nuovo artefatto,
work-rxjava2
, introduceRxWorker
. Questo è unListenableWorker
che prevedeSingle<Payload>
. - Il supporto per Firebase JobDispatcher è stato rimosso a causa del suo ritiro imminente. Ciò significa che l'elemento
work-firebase
non verrà più aggiornato mentre ci avviciniamo alla versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
Payload
inResult
.Result
è ora una "classe sigillata" con tre implementazioni concrete, che puoi ottenere tramiteResult.success()
(oResult.success(Data)
),Result.failure()
(oResult.failure(Data)
) eResult.retry()
. I tuoiListenableFuture
ora generanoResult
anzichéPayload
. Gli elementiWorker
non hanno metodi getter e setter per l'outputData
. Questo è un cambiamento che provoca un errore. - Sono stati aggiunti
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
,Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
e varianti per supportare meglio gli URI dei contenuti con attivazione lenta. b/119919774 WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
variante aggiunta. Questo metodo richiede l'API 26.- Aggiunti metodi di estensione Kotlin
Operation.await()
eListenableFuture.await()
. Operation.getException()
rinominato inOperation.getThrowable()
. Questo è un cambiamento che provoca un errore.- La classe
ContentUriTriggers
e i metodi che fanno riferimento a questa classe non sono più disponibili per l'uso pubblico. Questo è un cambiamento che provoca un errore. - Sono stati rimossi gli altri metodi varargs in
WorkManager
,WorkContinuation
eOneTimeWorkRequest
per semplificare l'API. Per risolvere eventuali problemi di build, puoi includere le variabili vararg esistenti conArrays.asList(...)
. Vengono comunque incluse versioni con un singolo argomento di ogni metodo. Questo è un cambiamento che provoca un errore. - Rimosse
WorkContinuation.combine(OneTimeWorkRequest, *)
varianti. Stava presentando un'API confusa; i metodicombine
esistenti sono più comprensibili. Questo è un cambiamento che provoca un errore.
Correzioni di bug
- Le implementazioni pre-Marshmallow sono ora più affidabili nel ripristino dopo la disattivazione del processo di un'attività già in esecuzione.
- Il valore
LiveData
osservato tramiteobserveForever
viene monitorato tramite WorkManager. Questo è un backport di una correzione della libreria della stanza virtuale. 74477406 Data.Builder.build()
ora genera un'eccezione se l'oggetto serializzato supera le dimensioni massime consentite. In precedenza, ciò si verificava solo in un thread in background per cui non potevi gestirlo correttamente.- Maggiori opere distinte interrotte e annullate;
getWorkInfoById()
restituirà unWorkInfo
conState
CANCELLED
nel mese diListenableWorker.onStopped()
. - Tratta
null
Result
come non riusciti inListenableWorker
. B/120362353 - Correzione speculativa per Shield Tablets che eseguono l'API 24 che a volte generavano un
IllegalArgumentException
. B/119484416
Modifiche che provocano un errore nell'API
- Il supporto per Firebase JobDispatcher è stato rimosso a causa del suo ritiro imminente. Ciò significa che l'elemento
work-firebase
non verrà più aggiornato mentre ci avviciniamo alla versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
Payload
inResult
.Result
è ora una "classe sigillata" con tre implementazioni concrete, che puoi ottenere tramiteResult.success()
(oResult.success(Data)
),Result.failure()
(oResult.failure(Data)
) eResult.retry()
. I tuoiListenableFuture
ora generanoResult
anzichéPayload
. Gli elementiWorker
non hanno metodi getter e setter per l'outputData
. - Aggiunti metodi di estensione Kotlin
Operation.await()
eListenableFuture.await()
. Operation.getException()
rinominato inOperation.getThrowable()
.- La classe
ContentUriTriggers
e i metodi che fanno riferimento a questa classe non sono più disponibili per l'uso pubblico. - Sono stati rimossi gli altri metodi varargs in
WorkManager
,WorkContinuation
eOneTimeWorkRequest
per semplificare l'API. Per risolvere eventuali problemi di build, puoi includere le variabili vararg esistenti conArrays.asList(...)
. Vengono comunque incluse versioni con un singolo argomento di ogni metodo. - Rimosse
WorkContinuation.combine(OneTimeWorkRequest, *)
varianti. Stava presentando un'API confusa; i metodicombine
esistenti sono più comprensibili.
4 dicembre 2018
Room
La stanza 2.1.0-alpha03
è stata rilasciata con il supporto delle coroutine e diverse correzioni di bug.
Modifiche alle API
- L'FTS
tokenizer
in@Fts3
/@Fts4
ora richiede una stringa anziché un'enum. In questo modo la stanza virtuale può utilizzare tokenizzatori personalizzati. I tokenizzatori integrati sono ancora definiti inFtsOptions
come costanti di stringa. b/119234881
Nuove funzionalità
- Couroutine: i metodi DAO ora possono essere sospesi funzioni. Per supportare le funzioni di sospensione nella stanza virtuale è stato rilasciato un nuovo artefatto,
room-coroutines
. B/69474692 - I metodi DAO annotati con
@Insert
,@Delete
o@Update
ora supportanoListenableFuture
come tipo restituito. b/119418331
Correzioni di bug
- Risolto il bug per cui la stanza virtuale tentava erroneamente di trovare un costruttore con colonne nella proprietà
ignoredColumns
di@Entity
. b/119830714 - Risolto un bug per cui la stanza virtuale non contrassegnava i parametri del metodo DAO come definitivi nell'implementazione generata. b/118015483
- Risolto un bug per cui il processore della stanza si arrestava in modo anomalo quando veniva segnalato un errore in una query con simboli speciali. b/119520136
- Risolto un bug per cui Room rifiutava altre varie implementazioni
Collection
come argomenti di un'espressioneIN
. b/119884035 - Risolto un bug per cui i dati di LiveData restituiti dalla stanza virtuale ottervano la garbage collection se osservato per sempre, il che causava la mancata emissione di nuovi dati. b/74477406
- Aggiornamento del blocco di chiusura di
RoomDatabase
per ridurre il conflitto del blocco. b/117900450
8 nov 2018
Responsabile lavoro
WorkManager 1.0.0-alpha11
viene rilasciato. Questa release contiene molte modifiche che diventeranno API stabili a partire dal giorno beta
.
In questa versione sono state apportate modifiche all'API che provocano un errore; consulta la sezione Ultime modifiche all'API di seguito.
Modifiche alle API
work-runtime-ktx
introduce un nuovoCoroutineWorker
.WorkStatus
è stato rinominato inWorkInfo
. Tutte le varianti del metodogetStatus
corrispondenti sono state rinominate nelle variantigetWorkInfo
corrispondenti. Questo è un cambiamento che provoca un errore.ListenableWorker.onStopped()
non accetta più ha un argomento booleano che rappresenta seWorkRequest
è stato annullato.WorkManager
non fa più questa distinzione. Questo è un cambiamento che provoca un errore.- Il pacchetto
androidx.work.test
è stato rinominato come pacchettoandroidx.work.testing
. Questo è un cambiamento che provoca un errore. - I setter su
Constraints
non fanno più parte dell'API pubblica. Questo è un cambiamento che provoca un errore. WorkerParameters.getTriggeredContentUris()
eWorkerParameters.getTriggeredContentAuthorities()
hanno restituito in precedenza array. Ora questi metodi restituiscono raccolte. Questo è un cambiamento che provoca un errore.ListenableWorker.onStartWork()
è stato rinominato comeListenableWorker.startWork()
. Questo è un cambiamento che provoca un errore.- Il costruttore di
WorkStatus
non fa più parte dell'API pubblica. Questo è un cambiamento che provoca un errore. Configuration.getMaxJobSchedulerID()
eConfiguration.getMinJobSchedulerID()
sono stati rinominati rispettivamenteConfiguration.getMinJobSchedulerId()
eConfiguration.getMaxJobSchedulerId()
. Questo è un cambiamento che provoca un errore.- Sono state aggiunte molte annotazioni
@NonNull
all'API pubblica per migliorarne l'ergonomia. - Aggiungi l'API
WorkManager.enqueueUniqueWork()
per accodareOneTimeWorkRequest
univoche senza dover creare unWorkContinuation
. - Tutte le varianti dei metodi
enqueue
ecancel
suWorkManager
ora restituiscono un nuovo tipoOperation
. Questo è un cambiamento che provoca un errore. - Tutte le varianti di
enqueue
non accettano più vararg perWorkRequest
. Questo è un cambiamento che provoca un errore. Utilizza le Raccolte. Puoi usareArrays.asList()
per modificare il codice esistente. Lo abbiamo fatto per ridurre la superficie dell'API e il numero di metodi. - Se si tenta di
initialize
WorkManager
più di una volta per processo, verrà restituito unIllegalStateException
. Questo è un cambiamento che provoca un errore.
Correzioni di bug
WorkRequest.Builder
nell'elementowork-runtime-ktx
ora utilizzanoListenableWorker
. Correzioni b/117666259- Assicurati che la prossima esecuzione di
PeriodicWork
sia nel futuro. Correzioni b/118204399 - Rimuovi i potenziali I/O del disco quando utilizzi WorkManager all'avvio dell'app. Correzioni b/117796731
- Correggi una condizione di gara in
WorkConstraintsTracker
. Risolve i problemi relativi ad android-workmanager/problemi/56.
Modifiche che provocano un errore nell'API
WorkStatus
è stato rinominato inWorkInfo
. Tutte le varianti del metodogetStatus
corrispondenti sono state rinominate nelle variantigetWorkInfo
corrispondenti.ListenableWorker.onStopped()
non accetta più ha un argomento booleano che rappresenta seWorkRequest
è stato annullato.WorkManager
non fa più questa distinzione.- Il pacchetto
androidx.work.test
è stato rinominato come pacchettoandroidx.work.testing
. - I setter su
Constraints
non fanno più parte dell'API pubblica. WorkerParameters.getTriggeredContentUris()
eWorkerParameters.getTriggeredContentAuthorities()
hanno restituito in precedenza array. Ora questi metodi restituiscono raccolte.ListenableWorker.onStartWork()
è stato rinominato comeListenableWorker.startWork()
.- Il costruttore di
WorkStatus
non fa più parte dell'API pubblica. Configuration.getMaxJobSchedulerID()
eConfiguration.getMinJobSchedulerID()
sono stati rinominati rispettivamenteConfiguration.getMinJobSchedulerId()
eConfiguration.getMaxJobSchedulerId()
.- Tutte le varianti dei metodi
enqueue
ecancel
suWorkManager
ora restituiscono un nuovo tipoOperation
. - Tutte le varianti di
enqueue
non accettano più vararg perWorkRequest
. - Se si tenta di
initialize
WorkManager
più di una volta per processo, verrà restituito unIllegalStateException
.
1 novembre 2018
Cercapersone
Paging di 2.1.0-beta01
senza modifiche rispetto a 2.1.0-alpha01
.
30 ottobre 2018
Room
La stanza virtuale 2.1.0-alpha02
è stata rilasciata con diverse correzioni di bug e una nuova funzionalità.
Nuove funzionalità
- Aggiunto il supporto per il riferimento a
@DatabaseView
in@Relation
. B/117680932
Correzioni di bug
- Risolto il bug per cui la stanza eseguiva l'I/O del disco nel thread principale durante la sottoscrizione e l'eliminazione da un tipo restituito Rx. b/117201279
- Risolto un bug per cui Room non riusciva a trovare un convertitore di tipo appropriato per un campo in una classe di entità Kotlin. b/111404868
- Risolto un bug per cui la stanza virtuale generava codice errato per un'implementazione di un'interfaccia
DAO
contenente un metodo predefinito Kotlin privo di argomenti. b/117527454 - È stato aggiornato il parser grammaticale SQLite della stanza, correggendo un problema di prestazioni che causava tempi di compilazione lunghi. b/117401230
29 ottobre 2018
Navigazione
La navigazione 1.0.0-alpha07
è stata rilasciata con correzioni di bug e modifiche all'API.
Nuove funzionalità
- Una nuova classe AppBarConfiguration consente di personalizzare quali destinazioni sono considerate destinate di primo livello. Per informazioni dettagliate, consulta la documentazione aggiornata. b/117333663
- Ora puoi passare argomenti alla destinazione iniziale del grafico b/110300470
- I link diretti ora supportano gli schemi personalizzati con punti, trattini e segni più. b/112806402
Modifiche che provocano un errore
- Il modulo
navigation-testing-ktx
è stato piegato nellanavigation-testing artifact
e non sarà più pubblicato. - L'artefatto
navigation-testing
ora ha una dipendenza dalla libreria standard Kotlin. L'API è stata modificata per essere più coerente con le convenzioni di Kotlin, ma puoi continuare a utilizzarla per i test scritti in Java. - I grafici di navigazione registrati con manifest dei metadati non sono più supportati. b/118355937
- Non è più possibile collegare le azioni a destinazioni <attività>. aosp/785539
Correzioni di bug
- Ora i link diretti analizzano correttamente i parametri di query. b/110057514
- Le destinazioni delle attività ora applicano correttamente tutte le animazioni di entrata e uscita. b/117145284
- È stato risolto l'arresto anomalo che si verificava dopo le modifiche alla configurazione durante l'utilizzo dei navigatori personalizzati. b/110763345
Arg sicuri
- Gli argomenti sicuri ora hanno una dipendenza fissa dal plug-in Android per Gradle 3.2.1. b/113167627
- Ora è possibile generare indicazioni stradali per le classi interne. b/117407555
- Risolto il problema di generazione delle indicazioni stradali per un grafico <include>. b/116542123
12 ottobre 2018
Cercapersone
Il paging 2.1.0-alpha01
viene rilasciato 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
PagedList.Config.Builder.setMaxSize()
aggiunto per limitare il numero di elementi caricati in memoria.androidx.paging.Config()
aggiunto come alternativa Kotlin perPagedList.Config.Builder
androidx.paging.PagedList()
aggiunto come alternativa Kotlin perPagedList.Builder
DataSourceFactory.toLiveData()
aggiunto come alternativa Kotlin perLivePagedListBuilder
DataSourceFactory.toObservable()
etoFlowable()
aggiunti come alternative di Kotlin perRxPagedListBuilder
AsyncPagedListDiffer.addPagedListListener()
aggiunto per l'ascolto quando viene scambiato PagedList. b/111698609- È stata aggiunta
PagedListAdapter.onCurrentListChanged()
variante che supera il vecchio elenco e il nuovo elenco, la variante precedente ritirata. - Sono state aggiunte
PagedListAdapter/AsyncPagedListDiffer.submitList()
varianti che richiedono un callback aggiuntivo che si attiva se/quando viene visualizzato l'elenco di pagine, dopo la differenza. In questo modo puoi sincronizzare uno scambio di PagedList con altri aggiornamenti dell'interfaccia utente. b/73781068 PagedList.getLoadedCount()
aggiunto per farti sapere quanti elementi sono in memoria. Tieni presente che il valore restituito è sempre uguale a.size()
se i segnaposto sono disabilitati.
Correzioni di bug
- Correzione di una condizione di gara quando si differenziano gli elenchi riutilizzati b/111591017
PagedList.loadAround()
ora generaIndexOutOfBoundsException
quando l'indice non è valido. In precedenza, poteva verificarsi un arresto anomalo con un'altra eccezione non chiara.- Risolto il problema per cui una dimensione di caricamento iniziale estremamente ridotta insieme a dati non modificati non comportava un ulteriore caricamento b/113122599
11 ottobre 2018
Responsabile lavoro
WorkManager 1.0.0-alpha10
è stato rilasciato con il supporto del lavoro asincrono controllato dallo sviluppatore. In questa versione sono state apportate modifiche all'API che provocano un errore; consulta la sezione Ultime 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 ti invitiamo a dedicare un po' di tempo per inviare il tuo feedback sul nostro strumento di monitoraggio dei problemi.
Modifiche alle API
- Sono stati rimossi tutti i metodi e le classi
deprecated
precedenti, in particolare il costruttoreWorker
predefinito. Questa è una modifica che provoca un errore di API. NonBlockingWorker
è stato rinominato inListenableWorker
, che ora è una classe pubblica visibile e pronta per l'uso.ListenableWorker
fornisce l'accesso a un metodo astratto,ListenableFuture<Payload> onStartWork()
, che viene chiamato nel thread principale. Spetta a te iniziare ed elaborare il lavoro in modo asincrono. Al termine, aggiornaListenableFuture
in modo appropriato. Le implementazioni di riferimento dei valoriListenableFuture
sono fornite nel pacchettoFutures
inalpha02
(vedi sotto la sezioneWorkManager
).Worker
estendeListenableWorker
e funziona ancora come prima, con un metodoResult doWork()
astratto.- Alcuni metodi e membri sono stati riprodotti in modo casuale da
Worker
aListenableWorker
. - Presto forniremo le implementazioni di riferimento per
ListenableWorker
che usano coroutine Kotlin (una volta rilasciate le versioni stabili) e RxJava2.
- L'interfaccia
WorkerFactory
e l'implementazione concretaDefaultWorkerFactory
sono state unite in una classe astratta chiamataWorkerFactory
. L'implementazione assicura che il comportamento predefinito basato sul riflesso venga definito come ultimo sforzo per qualsiasi istanzaWorkerFactory
creata dall'utente. Questo è un cambiamento che provoca un errore. WorkManager.synchronous()
eWorkContinuation.synchronous()
e tutti i metodi correlati sono stati rimossi.ListenableFuture<Void>
aggiunto come tipo restituito di molti metodi nell'API. Questa è una modifica che provoca un errore di API.- Ora puoi acquisire e osservare in modo sincrono utilizzando gli
ListenableFuture
. Ad esempio,WorkManager.enqueue()
restituiscevoid
, ora restituisceListenableFuture<Void>
. Puoi chiamareListenableFuture.addListener(Runnable, Executor)
oListenableFuture.get()
per eseguire il codice una volta completata l'operazione. - Tieni presente che questi
ListenableFuture
non indicano se l'operazione è riuscita o meno, ma solo che è stata completata. Dovrai comunque collegare i metodi di WorkManager per ottenere queste informazioni. - Ignoriamo le chiamate
cancel()
per questi oggetti poiché sono poco chiari e difficili da ragionare (stai annullando l'operazione o il lavoro risultante?). Rientra nel contratto diFuture
. - Per mantenere la parità con i metodi sincroni
getStatus*
, abbiamo fornitoListenableFuture
varianti e rinominato quelli esistenti che hanno restituitoLiveData
in modo che includano esplicitamente "LiveData" come parte del nome (ad esempio,getStatusesByIdLiveData(UUID)
). Si tratta di una modifica che provoca un errore di API.
- Ora puoi acquisire e osservare in modo sincrono utilizzando gli
Correzioni di bug
- Risolto il problema noto di alpha09 relativo ai file
androidx-annotations.pro
duplicati. Puoi rimuovere la soluzione alternativa dalle note di rilascio precedenti eliminandoexclude 'META-INF/proguard/androidx-annotations.pro'
dal file gradle. - Sono state aggiunte configurazioni ProGuard per mantenere il nuovo costruttore
Worker
. b/116296569 - Correggi
NullPointerException
potenziale in una gara di condizioni in cui il lavoro è statoREPLACE
d. b/116253486 e b/116677275 WorkContinuation.combine()
ora accetta uno o piùWorkContinuation
anziché due o più. b/117266752
Modifiche che provocano un errore nell'API
- Sono stati rimossi tutti i metodi e le classi
deprecated
precedenti, in particolare il costruttoreWorker
predefinito. - L'interfaccia
WorkerFactory
e l'implementazione concretaDefaultWorkerFactory
sono state unite in una classe astratta chiamataWorkerFactory
. WorkManager.synchronous()
eWorkContinuation.synchronous()
rimosse.WorkManager.getStatus*()
metodi ora restituisconoListenableFuture
.WorkManager.getStatus*LiveData()
ha restituitoLiveData
.
Contratti a termine
Il future 1.0.0-alpha02
viene rilasciato.
Modifiche alle API
- Ora gli sviluppatori possono usare
ResolvableFuture
eAbstractResolvableFuture
come implementazioni concrete e leggere diListenableFuture
.
8 ottobre 2018
Room
La stanza 2.1.0-alpha01
è stata liberata.
Nuove funzionalità
- FTS: la stanza ora supporta le entità con una tabella di mappatura FTS3 o FTS4. Le classi annotate con
@Entity
ora possono essere ulteriormente annotate con@Fts3
o@Fts4
per dichiarare una classe con una tabella di mappatura di testo completo. 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 utilizzando l'annotazione @DatabaseView. b/67033276
- Valore automatico: la stanza virtuale ora supporta la dichiarazione delle classi annotate AutoValue come entità e POJO. Le annotazioni stanza
@PrimaryKey
,@ColumnInfo
,@Embedded
e@Relation
ora possono essere dichiarate nei metodi astratti di una classe con valori automatici annotati. Tieni presente che anche l'annotazione deve essere accompagnata da@CopyAnnotations
affinché Room possa essere comprensibile correttamente. b/62408420 - Supporto aggiuntivo per i tipi di reso Rx: i metodi DAO annotati con
@Insert
,@Delete
o@Update
ora supportano i tipi di reso RxCompletable
,Single<T>
eMaybe<T>
. B/63317956 - Tipi immutabili con
@Relation
: in precedenza la stanza richiedeva la possibilità di configurare@Relation
campi annotati, ma ora possono essere parametri del costruttore. enableMultiInstanceInvalidation
: è una nuova API inRoomDatabase.Builder
che consente l'annullamento della validità in più istanze di RoomDatabase utilizzando lo stesso file di database. Questo meccanismo di annullamento della validità di più istanze funziona anche su più processi. b/62334005fallbackToDestructiveMigrationOnDowngrade
: è una nuova API inRoomDatabase.Builder
che ricrea automaticamente il database in caso di downgrade. b/110416954ignoredColumns
: è una nuova API nell'annotazione@Entity
che può essere utilizzata per elencare i campi ignorati in base al nome. Utile per ignorare i campi ereditati su un'entità. b/63522075
Modifiche relative all'API / al comportamento
mCallback
emDatabase
inRoomDatabase
sono ora@Deprecated
e verranno rimossi nella prossima versione principale di Room. b/76109329
Correzioni di bug
- Sono stati risolti due problemi per cui la stanza non veniva ripristinata correttamente da un database danneggiato o una migrazione errata durante l'inizializzazione. b/111504749 e b/111519144
- Room ora utilizzerà correttamente il costruttore principale di Kotlin nelle classi di dati, evitando di dover dichiarare i campi come
vars
. B/105769985
1 ottobre 2018
La stanza 2.0.0
viene svincolata senza modifiche da 2.0.0-rc01
.
Il paging 2.0.0
è stato rilasciato con una singola correzione di bug.
Cercapersone
Correzioni di bug
- Risolto un arresto anomalo che poteva verificarsi con lo scorrimento molto veloce utilizzando
PositionalDataSource
e i segnaposto b/114635383.
21 settembre 2018
Il ciclo di vita 2.0.0
è stato rilasciato con una correzione di bug di 2.0.0-rc01
in ViewModel.
Ciclo di vita
Correzioni di bug
- Correzione di una regola ProGuard ViewModel che rimuove in modo errato i costruttori b/112230489
20 settembre 2018
Navigazione
La navigazione 1.0.0-alpha06
è stata rilasciata con correzioni di bug e modifiche all'API.
Nuove funzionalità
- Le transizioni degli elementi condivisi per le destinazioni Frammenti e Attività sono ora supportate b/79665225. Per ulteriori informazioni, consulta Implementare la navigazione con il componente Architettura di navigazione
- Se selezioni un elemento in
NavigationView
, ora verrà chiuso qualsiasi riquadro inferiore contenente b/112158843
Modifiche alle API
- Modifica che provoca un errore: ora il metodo
navigate()
di navigazione utilizza un parametroNavigator.Extras
. - Il metodo
getGraph()
di NavController è oraNonNull
b/112243286
Correzioni di bug
NavigationUI.setupWithNavController()
non perde più visualizzazioni se utilizzato con visualizzazioni da singole destinazioni b/111961977- Il navigatore
onSaveState()
ora è chiamato una sola volta b/112627079
Arg sicuri
- Le classi Directions di destinazione ora estendono la classe Directions dell'unità organizzativa principale se esiste b/79871405
- Ora le classi Indicazioni stradali e Args hanno un'implementazione utile di
toString()
b/111843389
19 settembre 2018
Responsabile lavoro
WorkManager 1.0.0-alpha09
viene rilasciato con correzioni di bug, aggiornamenti dell'infrastruttura e modifiche all'API.
Problema noto
Se riscontri il seguente problema: "Sono stati trovati più file con 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:
Trendy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Correzioni di bug
- È stata aggiunta un'altra correzione necessaria per l'errore "100 job". b/115560696
- Sono state aggiunte alcune correzioni per gli errori relativi ai vincoli di chiave esterna dovuti alle condizioni di gara. b/114705286
- Chiamate
ConstraintTrackingWorker.onStopped(boolean)
delegate alWorker
sottostante. B/114125093 - Applica il ritardo minimo di backoff corretto per Firebase JobDispatcher. b/113304626
- Il miglioramento dei thread garantisce l'uso interno alla libreria.
- Correggi internamente il potenziale problema con la deduplicazione di
LiveData
.
Modifiche alle API
- Ora puoi creare le tue istanze
Worker
in fase di runtime specificando unWorkerFactory
come parte diWorkManager.Configuration
. Il fabbrica di riserva èDefaultWorkerFactory
, che corrisponde al comportamento delle versioni precedenti di WorkManager.- I costruttori predefiniti per
Worker
eNonBlockingWorker
sono ora contrassegnati come deprecati. Utilizza il nuovo costruttore (Worker(Context, WorkerParameters)
) e chiamasuper(Context, WorkerParameters)
; le versioni future di WorkManager rimuoveranno il costruttore predefinito.
- I costruttori predefiniti per
- Abbiamo iniziato a utilizzare il nuovo artefatto
ListenableFuture
internamente (senza dipendenze Guava). Introdurremo l'API AscoltaableFutures nelle prossime versioni. Questa modifica supporterà l'eventuale visualizzazione diNonBlockingWorker
. - Aggiunta la possibilità di attivare il lavoro a tempo in
TestDriver
tramiteTestDriver.setInitialDelayMet(UUID)
eTestDriver.setPeriodDelayMet(UUID)
. B/113360060
Modifiche che provocano un errore
- I costruttori predefiniti
Worker
eNonBlockingWorker
sono deprecati. Esegui la migrazione al nuovo costruttore il prima possibile. Nelle versioni future il costruttore predefinito verrà rimosso.
27 agosto 2018
Responsabile lavoro
WorkManager 1.0.0-alpha08
è stato rilasciato con correzioni di bug.
Correzioni di bug
- Componenti di WorkManager etichettati in modo esplicito come avvio diretto e inconsapevoli, quindi non vengono attivati durante l'avvio diretto. In futuro, forniremo una versione di WorkManager che riconosce l'avvio diretto. B/112665532
- Risolto il problema per cui il lavoro ripetuto non era in esecuzione. b/112604021
- Risolto il lavoro periodico che non veniva eseguito ripetutamente (relativo al problema sopra indicato). b/112859683
- Rispettare i criteri di backoff quando il processo dell'app è già in esecuzione.
- I messaggi di eccezione sono stati corretti in
Data
per indicare che il limite è di 10 kB. - Valore massimo abbassato di
Configuration.setMaxSchedulerLimit(int)
a 50 per tenere conto della latenza nel completamento dell'elaborazione diJobScheduler
. b/112817355
16 agosto 2018
Responsabile lavoro
WorkManager 1.0.0-alpha07
viene rilasciato con correzioni di bug e modifiche di minore entità all'API.
Correzioni di bug
- Correzione di una potenziale query SQL con limiti negativi che poteva restituire un numero illimitato di risultati.
- L'esecuzione di un'attività terminata ora annulla correttamente tutte le copie in sospeso di tale lavoro in altri scheduler. Ciò ha comportato il superamento del limite di
JobScheduler
job. b/111569265 - È stato risolto un problema di
ConcurrentModificationException
inConstraintTracker
. B/112272753 - Le annotazioni del tipo restituito
Data.getBooleanArray(String)
eData.getIntArray(String)
sono state modificate in@Nullable
anziché@NonNull
. B/112275229
Modifiche alle API
Worker
ora estende un nuovo corso,NonBlockingWorker
. Ciò non influisce sull'utilizzo corrente. In futuro,NonBlockingWorker
diventerà un'entità completamente supportata per le soluzioni di threading personalizzate.- Le annotazioni del tipo restituito
Data.getBooleanArray(String)
eData.getIntArray(String)
sono state modificate in@Nullable
anziché@NonNull
. B/112275229 - Estensioni Kotlin: ritiro di
Map.toWorkData()
e aggiunta diworkDataOf(vararg Pair<String, Any?>)
di primo livello per una maggiore coerenza con le API esistenti.
10 agosto 2018
Navigazione
La navigazione 1.0.0-alpha05
è stata rilasciata con correzioni di bug.
Correzioni di bug
- Correggi un bug che causa un comportamento errato dello stack. b/111907708
- Correggi un bug in
equals()
delle classi Args generate. b/111450897 - Correggi un errore della build in Args sicuri. b/109409713
- Correggere una conversione da identificatori di risorse a nomi java b/111602491
- Correggi i messaggi di errore relativi alla possibilità di nulla nel plug-in Safe Args.
- Aggiungi annotazioni con supporto nullo mancanti.
6 agosto 2018
Versioni AndroidX di release di Ciclo di vita, Stanza e Paging della versione 2.0.0-rc01
. Tutti gli elementi non sono stati modificati nel periodo 2.0.0-beta01
.
1 agosto 2018
Responsabile lavoro
WorkManager 1.0.0-alpha06
è stato rilasciato con correzioni di bug.
Correzioni di bug
- Impedisci il blocco del database durante la pianificazione del lavoro. b/111801342
- Correggi un bug che causa il mancato funzionamento di
PeriodicWork
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/ISSUE/56 - Crea
WorkRequest
univoci quando utilizziWorkRequest.Builder#build()
. B/111408337 - Abilita l'utilizzo di
RescheduleReceiver
solo quando sono presentiWorkRequest
che ne hanno bisogno. b/111765853
24 luglio 2018
Responsabile lavoro
WorkManager 1.0.0-alpha05
viene rilasciato con importanti correzioni di bug e modifiche al logging.
Modifiche alle API
WorkManager.getInstance()
ha ora l'annotazione con@NonNull
anziché con@Nullable
. Invece, se il singleton non viene inizializzato correttamente nei casi di inizializzazione manuale, il metodo genera unIllegalStateException
. Questa è una modifica rivoluzionaria dell'API.- È stata aggiunta una nuova API,
Configuration.Builder.setMinimumLoggingLevel(int)
, che può controllare le Preferenze di lettura di WorkManager. Per impostazione predefinita, WorkManager registraLog.INFO
e versioni successive. - È stata modificata la firma di
Data.getString()
in modo che non venga più utilizzato un valore predefinito (è implicitamentenull
). Si tratta di una modifica che provoca un errore dell'API. - Alcuni metodi sono stati contrassegnati come
@hide
necessari solo per l'utilizzo interno. Include il costruttoreConstraints
,Data.toByteArray()
eData.fromByteArray(byte[])
. Questa è una modifica che provoca un errore di API.
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 programmazione di
PeriodicWorkRequest
quando si utilizzaJobScheduler
. B/110798652 - Risolto il problema per cui i
PeriodicWorkRequest
non venivano eseguiti correttamente dopo la sospensione del dispositivo. b/111469837 - Risolto il problema dei ritardi iniziali durante l'utilizzo di Firebase JobDispatcher. b/111141023
- Risolti alcuni potenziali problemi relativi a condizioni di gara e tempi.
- Sono stati liberati correttamente
BroadcastReceiver
che non erano più necessari. - Ottimizzazione delle prestazioni di riprogrammazione al riavvio delle app dopo la chiusura forzata.
- È consentito chiamare
TestScheduler.setAllConstraintsMet(UUID)
prima o dopo aver accodato ilWorkRequest
specificato. b/111238024
Modifiche che provocano un errore
WorkManager.getInstance()
ha ora l'annotazione con@NonNull
anziché con@Nullable
.- È stata modificata la firma di
Data.getString()
in modo che non venga più utilizzato un valore predefinito (è implicitamentenull
). - Alcuni metodi sono stati contrassegnati come
@hide
necessari solo per l'utilizzo interno. Include il costruttoreConstraints
,Data.toByteArray()
eData.fromByteArray(byte[])
.
19 luglio 2018
Navigazione
La navigazione 1.0.0-alpha04
e il plug-in gradle Safe Args associato contengono una serie di modifiche all'API, modifiche del comportamento e correzioni di bug.
Modifiche relative all'API / al comportamento
- NavHostFragment imposterà sempre il frammento corrente come frammento di navigazione principale, assicurando che i gestori dei frammenti figlio vengano saltati prima che venga visualizzato il NavController esterno b/111345778
Arg sicuri
- Modifica che provoca un errore:
app:type
è stato modificato inapp:argType
per evitare conflitti con altre librerie come ConstraintLayout 2.0.0-alpha1 b/111110548 - Ora è possibile fare clic sui messaggi di errore di Args sicuri b/111534438
- Le classi Args ora confermano che gli attributi
NonNull
in realtà non sono null b/111451769 - Sono state aggiunte ulteriori annotazioni
NonNull
alle classi generate da NavDirections e Args b/111455455 b/111455456
Correzioni di bug
- Risolto il problema del pulsante Indietro del sistema dopo il collegamento diretto a una destinazione del frammento b/111515685
12 luglio 2018
Navigazione
La navigazione 1.0.0-alpha03
e il plug-in gradle Safe Args associato contengono una serie di modifiche all'API, modifiche del comportamento e correzioni di bug.
Modifiche relative all'API / al comportamento
- È stato aggiunto un metodo NavigationUI.setupWithNavController per barra degli strumenti 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 back 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
- Cambio di rottura: i caratteri non alfanumerici nei nomi di azioni e argomenti verranno sostituiti da lettere maiuscole e minuscole nei rispettivi nomi dei metodi NavDirections.
- Ad esempio,
DemoController.index
diventeràsetDemoControllerIndex
b/79995048 - Ad esempio,
action_show_settings
diventeràactionShowSettings
b/79642240
- Ad esempio,
- Modifica che provoca un errore: gli argomenti ora sono considerati non null per impostazione predefinita. Per consentire valori nulli per argomenti stringa e parcelable, aggiungi
app:nullable="true"
b/79642307 - Ora puoi utilizzare
app:type="long"
con valori predefiniti nel formato "123L" b/79563966 - Ora sono supportati gli argomenti comprimibili, utilizzando un nome di classe completo per
app:type
. L'unico valore predefinito supportato è"@null"
b/79563966 - Le classi Args ora implementano
equals()
ehashCode()
b/79642246 - Ora il plug-in Safe Args può essere applicato ai progetti della libreria b/80036553
- Ora il plug-in Safe Args può essere applicato ai progetti di funzionalità b/110011752
Correzioni di bug
- Risolti i problemi relativi alla navigazione durante la navigazione durante i metodi del ciclo di vita dei frammenti b/109916080
- Sono stati risolti i problemi relativi alla navigazione più volte nei grafici nidificati b/110178671
- Sono stati risolti i problemi relativi all'utilizzo di
setPopUpTo
con la prima destinazione nel grafico b/109909461 - È stato risolto il problema a causa del quale tutti i valori
app:defaultValue
venivano passati come stringhe b/110710788 - aapt2 in bundle con il plug-in Android per Gradle 3.2 Beta 01 aggiunge ora regole di conservazione per ogni attributo
android:name
nei file XML di navigazione b/79874119 - È stata corretta la perdita di memoria durante la sostituzione del comando FragmentNavigator predefinito b/110900142
2 luglio 2018
Versioni AndroidX di release di Ciclo di vita, Stanza e Paging della versione 2.0.0-beta01
.
Ciclo di vita
Correzioni di bug
- Correzione della regola ProGuard di LifecycleObservationr per mantenere solo le implementazioni, non le sottointerfacce b/71389427
- Sono state corrette le regole di ProGuard di ViewModel per consentire l'offuscamento e la contrazione
Room
Modifiche relative all'API / al comportamento
- Aggiunta di
RoomDatabase.Builder.setQueryExecutor()
per consentire la personalizzazione della posizione di esecuzione delle query - Aggiunto il supporto
Observable
per RxJava2 - Le implementazioni generate da DAO e database sono ora definitive
Correzioni di bug
- Specifica il nome della classe/del campo nell'errore "Impossibile trovare getter per il campo" b/73334503
- È stata corretta la compatibilità con le versioni precedenti di RoomOpenHelper con le versioni precedenti di Room b/110197391
Cercapersone
Correzioni di bug
- Risolto il problema dei contenuti che scomparivano in alcuni casi precedenti (segnaposto, posizionealDataSource) b/80149146
- (Già rilasciato in
1.0.1
) Sono stati corretti gli arresti anomali per cuiPagedListAdapter
eAsyncPagedListDiffer
non segnalavano gli eventi di movimento. b/110711937
26 giugno 2018
Cercapersone
La paginazione di 1.0.1
è stata 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
- Sono stati corretti gli arresti anomali per cui
PagedListAdapter
eAsyncPagedListDiffer
non segnalavano gli eventi di movimento. b/110711937
Responsabile lavoro
WorkManager 1.0.0-alpha04
viene rilasciato.
Correzioni di bug
Ora gli elementi
PeriodicWorkRequest
vengono ripianificati correttamente quando viene utilizzata l'implementazione basata suAlarmManager
.Risolto il problema di un potenziale errore ANR durante la riprogrammazione di tutti i worker dopo un arresto forzato o un riavvio. b/110507716
Sono state aggiunte annotazioni 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 decidessi di eseguire il rollback a una versione precedente di WorkManager. b/74633270
Risolto l'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 lo stesso formato di tag implicito.
19 giugno 2018
Room
La stanza 1.1.1
è stata liberata. Questa release è identica alla stanza 1.1.1-rc1
.
Responsabile lavoro
WorkManager 1.0.0-alpha03
viene rilasciato.
Correzioni di bug
È stata corretta una condizione di gara nell'implementazione basata su
AlarmManager
. b/80346526.Sono stati risolti i processi duplicati durante l'utilizzo di
JobScheduler
dopo il riavvio del dispositivo.I job con trigger dell'URI dei contenuti vengono mantenuti tra un riavvio e l'altro. b/80234744
Aggiornamenti alla documentazione. b/109827628, b/109758949, b/80230748
È stato risolto un arresto anomalo durante il nuovo accodamento di un
WorkRequest
. b/109572353.Sono stati corretti gli avvisi del compilatore Kotlin durante l'utilizzo della dipendenza
work-runtime-ktx
.WorkManager utilizza ora
Room
versione1.1.1-rc1
.
Modifiche alle API
È stata aggiunta
getStatusesSync()
, la versione sincrona diWorkContinuation.getStatuses()
.Worker
è in grado di distinguere tra annullamento avviato dall'utente e interruzione temporanea richiesta dal sistema operativo.Worker.isStopped()
restituiscetrue
se è stato richiesto un qualsiasi tipo di interruzione.Worker.isCancelled()
restituiscetrue
quando l'opera è stata esplicitamente annullata. b/79632247Aggiungi il supporto per JobParameters#getNetwork() sull'API 28. È esposto tramite
Worker.getNetwork()
.È stato aggiunto
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
per applicare il numero di job che possono essere inviati aJobScheduler
oAlarmManager
. In questo modo puoi evitare cheWorkManager
utilizzi tutti i tuoi slot disponibili (JobScheduler
).È stato aggiunto
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, che consente di definire un intervallo di ID jobJobScheduler
che possono essere utilizzati daWorkManager
in sicurezza. b/79996760Worker.getRunAttemptCount()
restituisce il conteggio delle esecuzioni correnti per un determinatoWorker
. 79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
ti consente di accodare unPeriodicWorkRequest
univoco. b/79600647WorkManager.cancelAllWork()
annulla tutti iWorker
. Le librerie che dipendono daWorkManager
possono 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 di comportamento
- È stato aggiunto un tag implicito per tutti gli elementi
WorkRequest
, che è il nome completo della classeWorker
. In questo modo è possibile rimuovereWorkRequest
senzatag
o quandoid
non è disponibile. b/109572351
Modifiche che provocano un errore
Worker.WorkerResult
rinominato inWorker.Result
.Ora
Worker.onStopped
ha un parametroisCancelled
aggiuntivo che è impostato sutrue
quandoWorker
è stato esplicitamente annullato.
7 giugno 2018
La navigazione 1.0.0-alpha02
è stata rilasciata.
Navigazione
Cambiamenti di comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. B/109826220La navigazione ora URLDecodifica gli argomenti analizzati dagli URL dei link diretti. b/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
durante la chiamata della navigazione dai metodi del ciclo di vita dei frammenti. b/79632233La navigazione ora dipende dalla Support Library 27.1.1 per correggere lo sfarfallio durante l'uso delle animazioni. b/80160903
È stato corretto un
IllegalArgumentException
durante l'utilizzo di defaultNavHost="true" come frammento secondario. b/79656847È stato corretto un
StackOverflowError
durante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato risolto il problema
IllegalArgumentException
durante il ritorno a un grafico nidificato. b/80453447Risolto il problema di sovrapposizione dei frammenti durante l'utilizzo di
launchSingleTop
. 79407969La navigazione ora crea lo stack posteriore sintetico corretto per i grafici nidificati. b/79734195
L'interfaccia utente di navigazione ora evidenzia l'elemento corretto quando viene utilizzato un grafico nidificato come
MenuItem
. B/109675998
Modifiche alle API
L'attributo
clearTask
per le azioni e l'API associata inNavOptions
è stato ritirato. b/80338878L'attributo
launchDocument
per le azioni e l'API associata inNavOptions
è stato ritirato. b/109806636
24 maggio 2018
WorkManager 1.0.0-alpha02
viene rilasciato.
Responsabile lavoro
Correzioni di bug
È stato risolto un problema di
NullPointerException
il giornoState.isFinished()
. B/79550068Risolto un problema che causava la riprogrammazione di
Worker
per il giornoApplication.onCreate()
. B/79660657Risolto il problema per cui potevi pianificare più lavoro di quanto consentito dal sistema operativo. b/79497378
La pulizia dei wakelock associati ai
Worker
è stata spostata nel thread in background.Ora l'implementazione
AlarmManager
esegue correttamente la pulizia al termine di tutto il lavoro in attesa.Sono state corrette le query SQL di pulizia che interessavano le impostazioni internazionali non anglofone. b/80065360
Aggiunto il supporto per
float
inData
. B/79443878Data.Builder.putAll()
ora restituisce un'istanza diBuilder
. B/79699162Ulteriori informazioni relative a javadoc e correzioni nella documentazione. b/79691663
Modifiche alle API
Worker
possono reagire all'interruzione.Worker.isStopped()
può essere utilizzato per verificare seWorker
è stato arrestato.Worker.onStopped()
può essere utilizzato per eseguire operazioni di pulizia leggere.L'API
Worker.getTags()
restituisce unSet
di tag associati aWorker
.Sono stati aggiunti
javax.time.Duration
sovraccarichi per le API che richiedono una combinazione di durata eTimeUnit
s. Questo campo è protetto da@RequiresApi(26)
.WorkManager
estensioni sono state spostate dal pacchettoandroidx.work.ktx
al 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 rilasciate le impostazioni di paging di RxJava2 1.0.0-rc1
e della stanza 1.1.1-rc1
. Ti
consigliamo vivamente di utilizzare la stanza virtuale 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
La paginazione rxjava2
si sta spostando per il candidato di release senza modifiche rispetto alla versione alpha iniziale.
8 maggio 2018
Paging 1.0, Navigazione e WorkManager Alpha, Stanza 1.1, AndroidX
Vengono rilasciate le pagine 1.0.0
e Stanza 1.1.0
, insieme alle versioni alpha per due nuovi componenti dell'architettura: Navigazione e WorkManager.
Paging e Stanza non subiranno modifiche rispetto ai candidati più recenti per le release.
Nuova raccolta: navigazione
La navigazione fornisce un framework per la creazione
della navigazione in-app. Questa release iniziale è 1.0.0-alpha01
.
Nuova raccolta: WorkManager
WorkManager semplifica la pianificazione e l'esecuzione del lavoro in background garantito e sensibile a vincoli. Questa release iniziale è
1.0.0-alpha01
.
AndroidX
I componenti dell'architettura verranno spostati per diventare parte di AndroidX, inclusi nomi di pacchetti aggiornati, nomi degli artefatti e dipendenze di altre librerie AndroidX.
Queste librerie vengono rilasciate sotto la versione 2.0.0-alpha1
per essere utilizzate in combinazione con altre librerie AndroidX.
Estensioni Kotlin
Per ViewModel, ReactiveStreams e Sqlite (precedentemente componente "Database" di Room) sono state aggiunte librerie di estensioni Kotlin con la release alpha di AndroidX. Inoltre, Navigazione e WorkManager includono i moduli -ktx. Ciascuno di questi moduli di estensione è disponibile nell'aggiunta di componenti.
2 maggio 2018
- Candidato per la release 1.1.0
- La stanza
1.1.0-rc1
è stata liberata.
Correzioni di bug
- La stanza virtuale è ora compatibile con Kotlin
1.2.40
. B/78328708
19 aprile 2018
Candidato per la release di paging
La paging 1.0.0-rc1
e la stanza 1.1.0-beta3
vengono svincolate.
Cercapersone
Non abbiamo altri problemi noti o nuove funzionalità programmate per la release 1.0.0
. Esegui l'upgrade dei tuoi progetti per utilizzare 1.0.0-rc1
e aiutaci a testarlo in modo che possiamo spedire una solida roccia 1.0.0
.
Non sono state apportate modifiche a questa release, è uguale a 1.0.0-beta1
.
Room
Correzioni di bug
- Correggere l'errore di compilazione quando un POJO di Kotlin fa riferimento a un'entità di relazione definita in Java b/78199923
5 aprile 2018
Vengono rilasciate le stanze virtuali 1.1.0-beta2
, le Paging 1.0.0-beta1
e la Paging RxJava 1.0.0-alpha1
.
Le pagine saranno in versione beta per un breve periodo di tempo prima di procedere alla release del candidato.
Non abbiamo in programma di apportare ulteriori modifiche all'API per Paging 1.0
e la soglia di qualsiasi modifica all'API è molto alta.
Il supporto di Alpha RxJava2 per il Paging viene rilasciato come modulo facoltativo separato (android.arch.paging:rxjava2:1.0.0-alpha1
) e verrà eseguito temporaneamente il controllo delle versioni separatamente fino a quando non si stabilizza.
Questa nuova libreria fornisce un'alternativa RxJava2 a LivePagedListBuilder
, in grado di creare Observable
e Flowable
, utilizzando 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 elementoandroid.arch.paging:rxjava2
.
Modifiche alle API
Modifiche all'API per chiarire il ruolo degli esecutori nei builder:
Rinominato
setBackgroundThreadExecutor()
insetFetchExecutor()
(inPagedList.Builder
eLivePagedListBuilder
)Rinominato
setMainThreadExecutor()
insetNotifyExecutor()
(inPagedList.Builder
).
È stato corretto lo stato privato del membro di
PagedList.mCallbacks
.
Correzioni di bug
LivePagedListBuilder
attiva il caricamentoPagedList
iniziale sull'esecutore specificato, anziché sul pool di thread di I/O dei componenti Arch.Corretto il comportamento di invalidazione nei wrapper
DataSource
interni (utilizzati per implementareDataSource.map
, e il caricamentoPositionalDataSource
disabilitato tramite segnaposto) b/77237534
Room
Correzioni di bug
Risolto un bug critico nelle implementazioni Rx
Single
eMaybe
di Room per il quale riciclava in anticipo la query, causando problemi se aggiungessi più di un osservatore alle istanzeSingle
oMaybe
restituite. b/76031240RoomDatabase.clearAllTables non
VACUUM
erà il database se viene chiamato all'interno di una transazione. b/77235565
21 marzo 2018
Le stanze virtuali 1.1.0-beta1
, le pagine 1.0.0-alpha7
e i cicli di vita 1.1.1
vengono svincolate.
Room
Modifiche alle API
- In base al feedback della revisione delle API,
@RawQuery
non accetta più il trasferimento di unString
come parametro di ricerca. Devi utilizzare SupportSQLiteQuery. Consulta SimpleSQLiteQuery per creare facilmente un'istanza di SupportSQLiteQuery con il supporto di argomenti. - Il metodo fallbackToDestructivemigrationFrom di RoomDatabase.Builder ora accetta
vararg int
anzichévararg Integer
.
Correzioni di bug
RoomDatabase.clearAllTables ora tenta di restituire lo spazio al sistema operativo impostando un checkpoint WAL e
VACUUM
caricando il database.@RawQuery
ora accetta qualsiasi Pojo per la proprietàobservedEntities
, purché il Pojo faccia riferimento a una o più entità tramite i relativi campiEmbedded
oRelation
. b/74041772Paging: l'implementazione DataSource di Room ora gestisce correttamente le dipendenze multi-tabella (come relazioni e join). In precedenza, questi risultati non attivavano nuovi risultati o la loro compilazione non sarebbe riuscita. b/74128314
Cicli di vita
Solo una piccola modifica: android.arch.core.util.Function
viene spostata da arch:runtime
a arch:common
. In questo modo può essere utilizzato senza la dipendenza di runtime, ad esempio in paging:common
di seguito.
lifecycle:common
è una dipendenza di lifecycle:runtime
, quindi questa modifica non interessa lifecycle:runtime
direttamente, ma solo i moduli che dipendono direttamente da lifecycle:common
, come avviene per le paging.
Cercapersone
La pagina di 1.0.0-alpha7
viene rilasciata insieme ai cicli di vita 1.1.1
. Poiché le pagine in versione alpha7 dipendono dallo spostamento della classe Function
menzionata sopra, dovrai aggiornare la dipendenza lifecycle:runtime
a android.arch.lifecycle:runtime:1.1.1
.
La paginazione di alpha7
sarà la release finale prima dell'arrivo della versione beta di Paging.
Modifiche alle API
DataSource.LoadParams
oggetti ora hanno un costruttore pubblico eDataSource.LoadCallback
oggetti ora sono astratti. In questo modo è possibile includere unDataSource
o testare direttamente unDataSource
con un callback di simulazione. b/72600421- Mappatori per DataSource e DataSource.Factory
map(Function<IN,OUT>)
consente di trasformare, aggregare o decorare i risultati caricati da un elementoDataSource
.mapByPage(<List<IN>,List<OUT>>)
attiva la stessa opzione per l'elaborazione batch (ad esempio, se gli elementi caricati da SQL devono eseguire ulteriori query su un database separato, l'operazione può essere eseguita in batch).
- Aggiunta di
PagedList#getDataSource()
per praticità b/72611341 - Tutte le classi deprecate sono state rimosse dall'API, inclusi i resti del pacchetto
recyclerview.extensions
eLivePagedListProvider
. DataSource.Factory
è stata modificata da interfaccia a classe astratta per abilitare la funzionalità della mappa.
Correzioni di bug
- Builder modificato per essere definitivo. b/70848565
- L'implementazione della stanza
DataSource
è ora corretta per gestire le query su più tabelle. Questa correzione si trova nella stanza 1.1.0-beta1, vedi sopra. - Risolto un bug per cui
BoundaryCallback.onItemAtEndLoaded
non veniva richiamato perPositionalDataSource
se i segnaposto erano abilitati e la dimensione totale era un multiplo esatto delle dimensioni della pagina.
2 marzo 2018
La stanza 1.1.0-alpha3
è stata liberata. Questa è l'ultima release alpha pianificata per la stanza 1.1.0
.
Modifiche alle API
I metodi
addObserver
eremoveObserver
di InvalidationTracker ora sono sincroni e devono essere richiamati in un thread non UI. Ciò impedisce alcune condizioni di gara durante l'osservazione delle tabelle.Nella classe RoomDatabase è presente un nuovo metodo
clearAllTables()
che troncherà tutti i contenuti della tabella. b/63807999SupportSQLiteQuery
ora dispone di un metodogetArgCount()
che restituisce il numero di parametri di query. b/67038952
Correzioni di bug
Ora
@RawQuery
è correttamente supportato per le query di paging. b/72600425I nomi delle stanze ora generano correttamente le classi
Dao
per evitare conflitti di nomi quando 2 o più interfacceDao
sono classi interne nello stesso pacchetto e hanno lo stesso nome. b/73536380I tipi di campo generici nei campi
Pojo
vengono analizzati correttamente come membri della classe espandibile. b/73534868Ora i parametri di query nelle interfacce
Dao
che vengono ereditati dagli artefatti delle dipendenze vengono analizzati correttamente. b/68118746Le query generate per i
@Relation
ora eseguono l'escape dei nomi dei campi in modo corretto. b/70925483
27 febbraio 2018
Viene rilasciato il paging 1.0.0-alpha6
insieme alla release 27.1.0 della 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. Questa versione alpha del paging è probabilmente l'ultima ad avere modifiche significative che provocano un errore dell'API.
Modifiche alle API
- Corsi spostati in recyclerview-v7:
ListAdapter
- Corsi rinominati e spostati in recyclerview-v7:
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- Classi rinominate all'interno del paging-runtime:
PagedListAdapterHelper
->AsyncPagedListDiffer
Le classi che sono state spostate erano utili insieme a RecyclerView, indipendentemente dalla Libreria Paging. Ciò significa che possono essere utilizzate senza dipendere da una release alpha di Paging, ma significa anche che le app che utilizzano Paging devono eseguire l'upgrade alla versione Alpha 6 e contemporaneamente alla libreria di supporto 27.1.0.
** Guida alla migrazione per il Paging Alpha6: **
- Aggiorna le dipendenze di paging e riciclo a
android.arch.paging:runtime:1.0.0-alpha6
ecom.android.support:recyclerview-v7:27.1.0
- queste operazioni devono essere eseguite contemporaneamente, poiché ListAdapter è stato spostato da Paging a RecyclerView
- Aggiorna eventuali riferimenti di
ListAdapterHelper
inAsyncListDiffer
- Sono stati rimossi
getItem(index)
/getItemCount()
a favore del pattern di chiamatagetCurrentList().getItem(index)
egetCurrentList().size()
, che sono più espliciti.
- Sono stati rimossi
- Aggiorna tutti i riferimenti di
ListAdapterConfig
inAsyncDifferConfig
- Aggiorna tutti i riferimenti di
DiffCallback
inDiffUtil.IttemCallback
- Aggiorna tutti i riferimenti di
PagedListAdapterHelper
inAsyncPagedListDiffer
- Aggiorna i riferimenti di
setList()
asubmitList()
- rinominata per chiarire la natura asincrona della differenza tra gli elenchi.
Correzioni di bug
- È stato risolto il problema del passaggio di una posizione iniziale errata al caricamento iniziale quando i segnaposto sono disabilitati. b/73513780
15 febbraio 2018
La stanza 1.1.0-alpha2
è stata liberata.
Nuove funzionalità
La stanza virtuale ora supporta l'apertura del database in modalità di logging in avanti. In questa modalità, le operazioni di scrittura non bloccheranno più le query di lettura. Anche se consuma più memoria (a causa di più connessioni), questa modalità è in genere più veloce. Per impostazione predefinita, la stanza virtuale utilizzerà WAL se il dispositivo è di tipo
API 16
o superiore e non è un dispositivo con memoria ridotta. Puoi controllare questo comportamento utilizzando il metodosetJournalMode()
suRoomDatabase.Builder
. B/67757002Assistenza Guava: Room ora supporta la restituzione di Guava
Optional<T>
oListenableFuture<T>
nelle queryDAO
. Per utilizzareListenableFuture<T>
, devi importareguava
elemento dalla stanza virtuale (android.arch.persistence.room:guava:1.1.0-alpha2
).La stanza ora supporta la restituzione di
java.util.Optional<T>
daDAO
query.I metodi di interfaccia con implementazioni predefinite sono ora supportati nei metodi
@Transaction
nelle classiDAO
. Questo vale sia perJava 8
sia perKotlin
. B/72416735
Correzioni di bug
I costruttori con
@Relation
non causeranno un errore di compilazione se è possibile utilizzare un altro costruttore. b/72884434I nomi delle tabelle con caratteri di escape
'
nei metodi@Query
ora presentano correttamente i caratteri di escape per il tracker dell'annullamento della validità. b/72366965Room ora utilizza le annotazioni
@Metadata
Kotlin per leggere la struttura della classe durante l'elaborazione delle annotazioni. Ciò significa che, anche se un pojo viene ereditato da una dipendenza, i nomi dei parametri del costruttore possono essere letti correttamente. b/67181813È stato risolto un problema relativo alla ricerca dei percorsi di migrazione di downgrade. b/72153525
I tipi di colonna non predefiniti vengono ora gestiti correttamente durante la migrazione da un database esistente a Room. b/71953987
La stanza virtuale ora gestisce correttamente i campi
boolean?
persistenti nelle classi Kotlin. b/72786402
22 gennaio 2018
Vengono rilasciati i cicli di vita 1.1.0
, stanza 1.1.0-alpha1
e paging 1.0.0-alpha5
.
Ciclo di vita 1.1.0
Modifiche relative alla confezione
Ora sono disponibili nuove dipendenze molto più ridotte:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- Le proprietà
LifecycleActivity
eLifecycleFragment
deprecate sono state rimosse. UtilizzaFragmentActivity
,AppCompatActivity
o l'assistenzaFragment
. @NonNull
annotazioni sono state aggiunte aViewModelProviders
eViewModelStores
- Il costruttore
ViewModelProviders
è stato ritirato. Utilizza direttamente i relativi metodi statici - L'API
ViewModelProviders.DefaultFactory
è stata ritirata. UtilizzaViewModelProvider.AndroidViewModelFactory
- È stato aggiunto il metodo
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
statico per recuperare unaFactory
statica adatta per creare istanzeViewModel
eAndroidViewModel
.
Aula 1.1.0-alpha1
Nuove funzionalità
RawQuery
: questa nuova API consente ai metodi@Dao
di ricevere l'SQL come parametro di query b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: questa nuova API inRoomDatabase.Builder
consente un controllo più granulare da cui sono consentite le migrazioni distruttive delle versioni di schema di avvio (rispetto a fallbackToDestructiveMigrate) b/64989640- Ora Room supporta solo le API Paging più recenti (alpha-4+), con un'interruzione del supporto per
LivePagedListProvider
, deprecato. Per usare la nuova versione alpha della stanza virtuale, devi utilizzare il pagingalpha-4
o superiore e passare daLivePagedListProvider
aLivePagedListBuilder
se non l'hai ancora fatto.
Correzioni di bug
- Supporto migliorato per i tipi Kotlin Kapt. b/69164099
- L'ordine dei campi non annulla più lo schema. b/64290754
Paging 1.0.0-alpha5
Correzioni di bug
- Correggere il caricamento delle pagine quando i segnaposto sono disattivati b/70573345
- Registrazione aggiuntiva per il monitoraggio del bug IllegalArgumentException b/70360195 (e correzione speculativa lato stanza)
- Correzioni del codice di esempio Javadoc b/70411933, b/71467637
11 dicembre 2017
Paging di alpha4-1
rilasciato. Si tratta di una piccola release per la correzione di bug relativa alla Paging alpha 4.
Correzioni di bug
- Non controllare la presenza di origini dati non valide nei parametri di callback. b/70353706, b/70360195
7 dicembre 2017
Viene rilasciato il paging alpha4
, con modifiche e aggiunte significative, principalmente per casi d'uso di rete e database e rete.
Modifiche alle API
DataSource
ora è un'API asincrona, per semplificare il paging direttamente dalla rete:- Un unico punto di contatto per dimensioni e dati iniziali
- Supporta il nuovo tentativo di rete tenendo premuto il callback ed eseguendo l'invio in un secondo momento
- I callback Threadsafe consentono il caricamento asincrono per la creazione di un singolo
PagedList
supportato dalla rete nel thread dell'interfaccia utente. - Comportamento di errore più chiaro relativo ai parametri di caricamento iniziali
TiledDataSource
è stato rinominato inPositionalDataSource
per riflettere la sua indicizzazione basata sulla posizione e il fatto che non viene affiancato quando i segnaposto sono disabilitati.PageKeyedDataSource
è stato aggiunto per supportare i token successivi/precedenti incorporati nei caricamenti delle pagine di rete.KeyedDataSource
è stato rinominato inItemKeyedDataSource
per chiarire le differenze.LivePagedListBuilder
eDataSource.Factory
sostituisconoLivePagedListProvider
. Il builder offre la stessa funzionalità con una maggiore personalizzazione e valori predefiniti più semplici. La fabbrica consente al codice di generazioneDataSource
di rimanere indipendente daLiveData
.PagedList.BoundaryCallback
aggiunto per il caso d'uso database e rete.Il costruttore
PagedList.Builder
utilizzaDataSource
+PagedList.Config
, ora più simile aLivePagedListBuilder
, e consente l'operatore diamante in linguaggio Java o i tipi dedotti in Kotlin.PagedList.getConfig()
è stato aggiunto ePagedList.Config
ora dispone di proprietà membro pubbliche.KeyedDataSource.loadBefore()
non prevede più l'annullamento dei risultati.PagedListAdapter.onCurrentListChanged()
aggiunto per rimanere in ascolto degli aggiornamenti su cui viene visualizzato PagedList.
Correzioni di bug
- Eccezione IndexOutOfBoundsException in PagedListAdapter(Helper) b/67883658
1.0.0 - 6 novembre 2017
Tutti i componenti principali (eccetto Pagging) ora sono 1.0.0
. Si tratta della stessa release di rc1
, tranne per una modifica alla libreria reactivestreams
.
Correzioni di bug
LiveDataReactiveStreams
ora implementa correttamente la specifica Reactive Streams. b/67999342
Candidato per la release - 18 ottobre 2017
Tutti gli elementi principali (tranne i paging) ora sono 1.0.0-rc1
.
Non abbiamo altri problemi noti o nuove funzionalità in programma per la release di 1.0.0
. Esegui l'upgrade dei tuoi progetti per utilizzare 1.0.0-rc1
e aiutaci a testarlo in modo che possiamo spedire una solida roccia 1.0.0
.
Cambiamento di comportamento
- Con questa release, l'invio
Lifecycle.Event#ON_STOP
viene ora eseguito quando viene chiamatoonSaveInstanceState
(in precedenza era contrassegnato comeCREATED
senza inviareON_STOP
). Per saperne di più, consulta la documentazione relativa ai cicli di vita.
Correzioni di bug
Stanza:
- La stanza virtuale ora dipende dall'ultimo artefatto xerial che risolve i problemi
OutOfMemory
durante la compilazione. b/62473121 - Ora i metodi
Query
possono essere annotati con@Transaction
. Per ulteriori dettagli, consulta la documentazione di riferimento su@Transaction
. b/65112315 - La classe
StringUtil
in Room è stata rimossa dall'API pubblica (non è mai stata concepita come API pubblica).
- La stanza virtuale ora dipende dall'ultimo artefatto xerial che risolve i problemi
Cicli di vita:
LiveData
funziona correttamente quando l'attività è parzialmente coperta nell'API < 24. b/65665621I metodi
OnLifecycleEvent
nelle classi padre ora vengono chiamati correttamente o viene stampato un avviso durante la compilazione, se non è possibile. b/63474615Ciclo di vita ora conserva un
WeakReference
nel relativo LifecycleOwner per evitare di perdere il valore LifecycleOwner se viene conservato in memoria più a lungo del solito (questa è solo una precauzione, devi comunque fare attenzione a non perdere ilLifecycle
).
9 ottobre 2017
Viene rilasciato il paging alpha-3
, il che lo rende compatibile con la release beta 2
di Cicli di vita e Stanza.
Correzioni di bug
- Documentazione migliorata per le Paging.
5 ottobre 2017
Tutti gli elementi principali (tranne i paging) ora sono beta 2
.
In questa release non sono disponibili nuove versioni di Paging.
Correzioni di bug
Cicli di vita:
- Ora
LiveDataReactiveStreams
annulla correttamente l'iscrizione al publisher di origine quandoLiveData
non è attivo. b/62609183 - Gli eventi del ciclo di vita vengono propagati correttamente alle classi padre quando la classe padre appartiene a un altro modulo. b/63474615
- LiveData gestisce correttamente gli osservatori quando annullano l'iscrizione durante la creazione dell'abbonamento. b/66337741
FullLifecycleObserver
per 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 1.0.0 viene spedito)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
- Ora
Stanza:
- La stanza ora stampa un errore al momento della compilazione quando il Pojo restituito in un metodo
@Query
ha un campo@NonNull
che non corrisponde ad alcuna colonna nella risposta alla query. Se il campo è@Nullable
, solo la stanza stampa un avviso. b/67115337 - La sala ora convalida gli indici nelle versioni del sistema operativo più recenti. b/63132683
- La stanza sceglie il costruttore no-arg per impostazione predefinita se sono presenti più costruttori corrispondenti in un Pojo. b/67353427
- Le chiavi primarie a colonna singola possono essere
Nullable
se èInteger
oLong
. B/67086876 - Il tracker di invalidità gestisce correttamente il rientro in modalità di prova. b/65471397
- La stanza virtuale ora controlla la presenza di caratteri non validi nei nomi di colonne e tabelle
al momento della compilazione (caratteri non validi:
`
,"
). b/64749111
- La stanza ora stampa un errore al momento della compilazione quando il Pojo restituito in un metodo
21 settembre 2017
In questa release, tutti i moduli dei componenti dell'architettura raggiungono almeno beta 1
(tranne la nuova libreria di paging, che è alpha 2
).
Non abbiamo in programma altre modifiche all'API. Potrebbero verificarsi modifiche non pianificate, ma la soglia per cambiare qualsiasi API prima della stabilità di 1.0.0
è molto elevata ed è improbabile che ciò avvenga.
- LifecycleActivity e LifecycleFragment verranno rimosse prima della stabilità di
1.0.0
. Non sono necessari quando si utilizza la Support Library26.1.0
o versioni successive.
A differenza della fase alpha, la fase beta è programmata per avere una durata molto breve.
Modifiche alla versione
- Le estensioni del ciclo di vita e la stanza virtuale ora sono
beta 1
- Il paging è ora
alpha 2
- Nessuna modifica ai cicli di vita (runtime, comune) e ad Arch Core (comune). Entrambi gli elementi sono nella versione
1.0.0
dal 13 settembre.
Nuovi artefatti
I cicli di vita ora hanno un nuovo artefatto chiamato
common-java8
. Questo artefatto contiene una nuova interfaccia denominata DefaultLifecycleObservationr, che include implementazioni predefinite per tutti i metodi del ciclo di vita. Se usi il linguaggio Java 8, dovresti preferire questo artefatto alle annotazioni.- A causa di un bug in
beta1
, devi aggiungere una dipendenza esplicita al moduloandroid.arch.lifecycle:common:1.0.1
per utilizzare il nuovo artefattocommon-java8
. Questo problema verrà risolto trabeta2
.
- A causa di un bug in
Modifiche relative alla confezione
android.arch.persistence.room.db
è stato spostato inandroid.arch.persistence.db
android.arch.persistence.room.db-impl
è stato spostato e rinominato inandroid.arch.persistence.db-framework
Entrambi questi artefatti sono già una dipendenza per Room quindi, a meno che tu non li stia utilizzando direttamente, non dovresti modificare nulla nei file di build.
Modifiche alle API
Stanza:
- L'annotazione @ColumnInfo ora supporta l'impostazione di regole di confronto per la colonna. b/62007004
- I campi
transient
ora vengono ignorati per impostazione predefinita, a meno che non siano annotati con@ColumnInfo
,@Embedded
o@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
DAO
e lo esegue all'interno di una transazione.
Supporto database SQLite:
- Modifiche all'API nella configurazione del database. b/65349673 b/65499876
Paging:
- Migliore documentazione relativa alle pagine di destinazione con più esempi e annotazioni thread.
Correzioni di bug
- Stanza:
- Le stringhe multilinea di Kotlin nei metodi
@Query
sono gestite correttamente. b/65809374
- Le stringhe multilinea di Kotlin nei metodi
- Paging:
- L'artefatto di paging 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) raggiungono la versione stabile 1.0.0
.
Con questa modifica, ora Support Library 26.1.0 dipende da queste librerie. Sia AppCompatActivity che Support Fragment ora implementano l'interfaccia LifecycleOwner.
Questa release dipende anche dalla libreria di supporto 26.1.0
per poter sfruttare la nuova integrazione.
Nuova raccolta: paging
Questa release include anche una nuova libreria chiamata Paging, che consente di caricare facilmente set di dati di grandi dimensioni in un RecyclerView in blocchi quando necessario. La pagina Paging viene rilasciata come alpha1
e avrà un proprio ciclo di rilascio.
Modifiche alle API
- Le seguenti classi sono deprecate e verranno rimosse in una release futura:
Correzioni di bug
Le classi generate ora sono annotate con
@Generated
se l'app ha l'annotazione nel classpath. b/35754819Corretto il bug relativo al confronto con l'osservatore di MediatorLiveData. b/64413274
Le query SQLite
WITH
sono ora supportate con [LiveData]. [ref-LiveData] b/62510164Risolto un bug per cui InvalidationTracker non inviava l'elenco corretto se viene osservata più di una tabella. b/65099281
Risolto un bug per cui la stanza virtuale generava file diversi su Windows. b/64470691
Ora sono supportati LifecycleObservationrs nel pacchetto radice. b/62310817
1.0.0 Alpha 9 - 16 agosto 2017
Correzioni di bug
- Risolto un bug in LiveData: il secondo Osservatore veniva ignorato quando il primo veniva rimosso dal relativo metodo
onChanged
. b/64285805
1.0.0 Alpha 8 - 1 agosto 2017
Cambiamenti di comportamento
- Viene aggiunto il vincolo
NOT NULL
per le colonne di tipi primitivi o per le colonne annotate con Non Null. In questo modo la struttura delle tabelle cambia. Se utilizzi già i componenti dell'architettura alpha 7 o versioni precedenti, devi implementare una migrazione per conservare i dati oppure utilizzare il metodofallbackToDestructiveMigration()
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 un bug critico nel metodo LifecycleRegistry
removeObserver
, che causava l'interruzione della lettura LifecycleObservationr.Corretto InvalidationTracker per i database personalizzati b/63162311
1.0.0 Alpha 6 - 25 luglio 2017
Modifiche al comportamento
L'ordine delle chiamate Lifecycle Guida per l'osservazione è stato modificato. In precedenza, gli osservatori venivano sempre chiamati in ordine di aggiunta: se
observer1
viene aggiunto prima del giornoobserver2
, riceveràON_CREATE
e tutti gli altri eventi prima del giornoobserver2
. Questo non è più vero per gli eventi di distruzione, perché gli osservatori vengono chiamati in ordine inverso di addizione. Di conseguenza, il comportamento attuale è questo: seobserver1
viene aggiunto prima del giornoobserver2
,ON_CREATE
viene inviato prima aobserver1
e poi aobserver2
(lo stesso avviene perON_START
eON_RESUME
), ma l'eventoON_PAUSE
viene prima inviato aobserver2
e solo in seguito aobserver1
(lo stesso perON_STOP
eON_DESTROY
).La stanza virtuale genera un'eccezione se la migrazione non è presente. In precedenza, la stanza virtuale avrebbe solo cancellato 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
È stato aggiunto il metodo
fallbackToDestructiveMigration()
aRoomDatabase.Builder
per cancellare il database in caso di mancata migrazione. b/63872392I componenti dell'architettura ora dipendono dalla libreria di supporto 26.0.0
Correzioni di bug
Correzione della gestione di @Relation nidificata in @Incorporato. b/63736065
Sono stati corretti i test delle migrazioni per le tabelle con chiave primaria con incremento automatico. b/63393618
Ora le @Query che eseguono query DELETE o UPDATE ricevono correttamente argomenti. b/63872538
Ora i ViewModel vengono conservati, quando il frammento del proprietario è nel backstack e la modifica della 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.Builder
per osservare quando viene creato o aperto un database. b/62699324@Query ora può restituire RxJava
Maybe
oSingle
. B/62231019
Devi dipendere dall'artefatto android.arch.persistence.room:rxjava2
per aggiungere il supporto RxJava alla stanza virtuale.
Correzioni di bug
Sono state corrette le query
@Delete
senza parametri. b/63608092Corretto il tipo di stanza per verificare la presenza di getter e setter. b/63733651
1.0.0 Alpha 4 - 11 luglio 2017
Modifiche alle API
È stato aggiunto un nuovo metodo di convenienza (
runInTransaction()
) a RoomDatabase.I metodi
@Insert
,@Delete
e@Update
ora possono avere parametri di diversi tipi di entità. b/62682405
Correzioni di bug
Correzione della gestione di
byte[]
nei metodi@Dao
. b/62460045Il controllo della migrazione nella stanza virtuale ora utilizza un 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
Al momento
@OnLifecycleEvent
supporta un solo parametro evento. Questo è un cambiamento in preparazione per il supporto di Java 8, in modo da poter eseguire in futuro la migrazione alle interfacce con metodi predefiniti. In relazione a questa modifica, solo i metodi annotati di@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
LifecycleActivity
eLifecycleFragment
vengono spostate nell'elementoandroid.arch.lifecycle:extensions
.migrationTestHelper riceve l'istanza strumentazione anziché
Context
per poter leggere lo schema dagli asset di test e creare il database nel contesto dell'applicazione.Le annotazioni
@Insert
,@Delete
e@Update
nei metodi@DAO
ora possono avereIterable
come 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
IN
sono gestiti correttamente. b/62608681Ora le classi DAO astratte possono avere un costruttore che riceve l'istanza
@Database
. b/38488747DAO
ora può 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)
Ridotta la superficie API della 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@Insert
query.
1.0.0 Alpha 1 - 17 maggio 2017
Mini SDK: 14
Avvertenze generali
Sebbene abbiamo condotto 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 solida. Se hai dubbi sul debug dei problemi nelle librerie che utilizzi, ti consigliamo di provare prima i componenti dell'architettura nei progetti secondari.
Non consigliamo a tutti di eseguire la migrazione oggi stesso. Avremo a disposizione una guida alla migrazione per il rilascio della versione 1.0 dei componenti dell'architettura.
Problemi e limitazioni noti
- Il ciclo di vita
Fragment
eActivityCompat
nella Libreria di assistenza non implementano ancora l'interfaccia diLifecycleOwner
. Lo faranno quando i componenti dell'architettura raggiungeranno la versione 1.0.0.