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
ConcurrentModificationException
sui 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
LiveData
utilizzati da WorkManager. - Spostata per utilizzare la dipendenza
Room
1.1.1
anziché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
MenuItem
conmenuCategory="secondary"
non torneranno più indietro stack quando utilizzato con i metodiNavigationUI
. b/120104424 AppBarConfiguration
ora ti consente di impostare una proprietà di riservaOnNavigateUpListener
che 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"
aMenuItem
per evitare di rompere il gruppo posteriore. aosp/852869- I metodi
fromBundle()
delle classiArgs
generate ora hanno un valore diverso da nullBundle
anzichéBundle
con valori null. aosp/845616
Correzioni di bug
- Ora gli argomenti vengono analizzati correttamente dai link diretti come
argType
corretto 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 classeResult
di 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:label
con 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 inOnDestinationChangedListener
B/118670572- Ora
OnDestinationChangedListener
passa anche ilBundle
degli argomenti aosp/837142 - Attributi
app:clearTask
eapp:launchDocument
e relativi attributi associati sono stati rimossi. Usaapp:popUpTo
con la radice del grafico per rimuovi tutte le destinazioni dal tuo back Stack. b/119628354 ActivityNavigator.Extras
ora utilizza un patternBuilder
e aggiunge la possibilità di imposta qualsiasi flagIntent.FLAG_ACTIVITY_
aosp/828140NavController.onHandleDeepLink
è stato rinominato inhandleDeepLink
aosp/836063- Molti metodi e classi non pensati per la creazione di sottoclassi, come
NavOptions
,NavInflater
,NavDeepLinkBuilder
eAppBarConfiguration
, è stata effettuatafinal
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
, così è più facile delega la creazione di frammenti a unFragmentFactory
. B/119054429 - Il costruttore per
NavGraphNavigator
non richiede più unContext
aosp/835340 - NavigatorProvider è ora
una classe, piuttosto che un'interfaccia.
NavigatorProvider
restituito 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à diOnNavigatorNavigatedListener
e invecenavigate
restituisce ilNavDestination
a cui è stato raggiunto. Navigator
istanze non possono più inviare eventi pop aNavController
. Prendi in considerazione utilizzando unOnBackPressedCallback
per intercetta le pressioni del pulsante Indietro e richiamanavController.popBackStack()
. aosp/833716
Correzioni di bug
- Ora
popUpTo
funziona in modo coerente quando la destinazione è un elemento<navigation>
B/116831650 - Sono stati corretti una serie di bug che hanno generato un
IllegalArgumentException
quando si utilizzano grafici nidificati b/118713731 b/113611083 b/113346925 b/113305559 - Ora l'attributo
dataPattern
di<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
@Override
quando 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 è unListenableWorker
che prevede unSingle<Payload>
. - Il supporto per Firebase JobDispatcher è stato rimosso a causa del suo imminente ritiro. Ciò significa che l'elemento
work-firebase
non verrà più aggiornato man mano che si avvia la versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
Payload
inResult
.Result
è ora una "classe protetta" con tre implementazioni concrete, ottenibili 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
. 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
ContentUriTriggers
che 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
,WorkContinuation
eOneTimeWorkRequest
per 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 metodicombine
esistenti 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.
LiveData
osservato tramiteobserveForever
viene 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à unWorkInfo
con iCANCELLED
diState
nei giorniListenableWorker.onStopped()
. - Considera
null
Result
come 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-firebase
non verrà più aggiornato man mano che si avvia la versione beta. Cercheremo di aggiungere un'alternativa in futuro. - Combinazione di
Payload
inResult
.Result
è ora una "classe protetta" con tre implementazioni concrete, ottenibili 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 e i metodi
ContentUriTriggers
che fanno riferimento non sono più disponibili per il pubblico. - Sono stati rimossi gli altri metodi varargs in
WorkManager
,WorkContinuation
eOneTimeWorkRequest
per 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 metodicombine
esistenti 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
tokenizer
in@Fts3
/@Fts4
ora prende una stringa anziché un'enum. Ciò consente l’utilizzo di tokenizzatori personalizzati da parte delle stanze. I tokenizzatori integrati sono ancora definiti inFtsOptions
come 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
,@Delete
o@Update
ora supportanoListenableFuture
come 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à
ignoredColumns
di@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
Collection
come 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
RoomDatabase
aggiornato 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-ktx
introduce un nuovoCoroutineWorker
.WorkStatus
è stato rinominato inWorkInfo
. Tutte le varianti del metodogetStatus
corrispondenti sono state rinominate ingetWorkInfo
varianti corrispondenti. Si tratta di una modifica che provoca un errore.ListenableWorker.onStopped()
non accetta più un argomento booleano che rappresenta seWorkRequest
è stato annullato.WorkManager
non 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
Constraints
non 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
WorkStatus
non 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
@NonNull
all'API pubblica per migliorarne l'ergonomia. - Aggiungi l'API
WorkManager.enqueueUniqueWork()
per accodareOneTimeWorkRequest
univoci senza dover creare unWorkContinuation
. - Tutte le varianti dei metodi
enqueue
ecancel
suWorkManager
ora restituiscono un nuovo tipo diOperation
. Si tratta di una modifica che provoca un errore. - Tutte le varianti di
enqueue
non 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
initialize
WorkManager
più volte per processo, ora verrà restituito unIllegalStateException
. Si tratta di una modifica che provoca un errore.
Correzioni di bug
- Gli elementi
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 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 metodogetStatus
corrispondenti sono state rinominate ingetWorkInfo
varianti corrispondenti.ListenableWorker.onStopped()
non accetta più un argomento booleano che rappresenta seWorkRequest
è stato annullato.WorkManager
non fa più questa distinzione.- Il pacchetto
androidx.work.test
è stato rinominato in pacchettoandroidx.work.testing
. - I setter su
Constraints
non 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
WorkStatus
non fa più parte dell'API pubblica. Configuration.getMaxJobSchedulerID()
eConfiguration.getMinJobSchedulerID()
sono stati rinominatiConfiguration.getMinJobSchedulerId()
eConfiguration.getMaxJobSchedulerId()
rispettivamente.- Tutte le varianti dei metodi
enqueue
ecancel
suWorkManager
ora restituiscono un nuovo tipo diOperation
. - Tutte le varianti di
enqueue
non accettano più vararg perWorkRequest
. - Se provi a
initialize
WorkManager
più 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
@DatabaseView
in 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
DAO
contenente 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 artifact
e non sarà più pubblicata. - L'artefatto
navigation-testing
ora 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.Builder
androidx.paging.PagedList()
aggiunta come alternativa a Kotlin perPagedList.Builder
DataSourceFactory.toLiveData()
aggiunta come alternativa a Kotlin perLivePagedListBuilder
DataSourceFactory.toObservable()
etoFlowable()
aggiunti come alternative a Kotlin perRxPagedListBuilder
AsyncPagedListDiffer.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 generaIndexOutOfBoundsException
quando 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 Issue Tracker.
Modifiche alle API
- Sono stati rimossi tutti i metodi e le classi
deprecated
in precedenza, in particolare il costruttoreWorker
predefinito. 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.ListenableWorker
fornisce 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 aggiornareListenableFuture
in modo appropriato. Le implementazioni di riferimento degli elementiListenableFuture
sono fornite nel pacchettoFutures
inalpha02
(vedi sotto la sezioneWorkManager
).Worker
estendeListenableWorker
e funziona ancora come prima, con un metodoResult doWork()
astratto.- Riproduzione casuale di alcuni metodi e membri da
Worker
aListenableWorker
. - A breve forniremo implementazioni di riferimento per i
ListenableWorker
che utilizzano 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 garantisce che il comportamento predefinito basato sulla riflessione venga chiamato come un ultimo sforzo per qualsiasi istanzaWorkerFactory
creata 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
ListenableFuture
non 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 fornitoListenableFuture
varianti e abbiamo rinominato quelli esistenti che hanno restituitoLiveData
in 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.pro
duplicati. 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
NullPointerException
potenziale in una gara in cui il lavoro è statoREPLACE
d. b/116253486 e b/116677275 WorkContinuation.combine()
ora accetta uno o piùWorkContinuation
invece di due o più. B/117266752
Modifiche che interessano le API
- Sono stati rimossi tutti i metodi e le classi
deprecated
in precedenza, in particolare il costruttoreWorker
predefinito. - L'interfaccia
WorkerFactory
e l'implementazione concretaDefaultWorkerFactory
sono state unite in una classe astratta chiamataWorkerFactory
. WorkManager.synchronous()
eWorkContinuation.synchronous()
rimossi.- I metodi
WorkManager.getStatus*()
ora restituisconoListenableFuture
s.WorkManager.getStatus*LiveData()
restituisceLiveData
sec.
Contratti a termine
Futures 1.0.0-alpha02
rilasciato.
Modifiche alle API
- Ora gli sviluppatori possono utilizzare
ResolvableFuture
eAbstractResolvableFuture
come 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
@Entity
possono essere ulteriormente annotate con@Fts3
o@Fts4
per 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
,@Embedded
e@Relation
possono essere dichiarate nei metodi astratti di una classe annotata con valori automatici. Tieni presente che queste annotazioni devono essere accompagnate anche da@CopyAnnotations
affinché la stanza virtuale possa interpretarle correttamente. b/62408420 - Supporto aggiuntivo per i tipi di reso Rx: i metodi DAO annotati con
@Insert
,@Delete
o@Update
ora 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@Relation
fossero configurabili, ma ora possono essere parametri del costruttore. enableMultiInstanceInvalidation
: è una nuova API inRoomDatabase.Builder
che 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.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 per nome. Utile per ignorare i campi ereditati su un'entità. B/63522075
Modifiche al comportamento / API
mCallback
emDatabase
inRoomDatabase
adesso sono@Deprecated
e 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
PositionalDataSource
e 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 èNonNull
b/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àWorker
sottostante. 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
Worker
in fase di runtime specificando unWorkerFactory
come parte diWorkManager.Configuration
. Il valore di fabbrica di riserva èDefaultWorkerFactory
, che corrisponde al comportamento delle versioni precedenti di WorkManager.- I costruttori predefiniti per
Worker
eNonBlockingWorker
sono 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
TestDriver
tramiteTestDriver.setInitialDelayMet(UUID)
eTestDriver.setPeriodDelayMet(UUID)
. B/113360060
Modifiche che provocano l'interruzione
- I costruttori
Worker
eNonBlockingWorker
predefiniti 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
Data
per 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
JobScheduler
job. b/111569265 - È stato corretto un
ConcurrentModificationException
inConstraintTracker
. B/112272753 - Annotazioni del tipo restituito di
Data.getBooleanArray(String)
eData.getIntArray(String)
modificate in@Nullable
anziché@NonNull
. B/112275229
Modifiche alle API
Worker
ora estende un nuovo corso,NonBlockingWorker
. Ciò non influisce sull'utilizzo attuale. In futuro,NonBlockingWorker
diventerà un'entità completamente supportata per le soluzioni di thread personalizzate.- Annotazioni del tipo restituito di
Data.getBooleanArray(String)
eData.getIntArray(String)
modificate in@Nullable
anziché@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
PeriodicWork
in 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
WorkRequest
univoci quando utilizziWorkRequest.Builder#build()
. B/111408337 - Attiva l'utilizzo di
RescheduleReceiver
solo quando sono presentiWorkRequest
che 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@NonNull
anziché@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.INFO
e 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
PeriodicWorkRequest
s quando si utilizzavaJobScheduler
. B/110798652 - È stato risolto un problema relativo alla mancata esecuzione di
PeriodicWorkRequest
dopo 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
BroadcastReceiver
che 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 ilWorkRequest
specificato. B/111238024
Modifiche che provocano l'interruzione
WorkManager.getInstance()
è ora annotato con@NonNull
anziché@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:argType
per 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
NonNull
in realtà non sono nulli b/111451769 - Sono state aggiunte altre annotazioni
NonNull
ai 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.index
diventeràsetDemoControllerIndex
b/79995048 - Ad es.
action_show_settings
diventeràactionShowSettings
b/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
setPopUpTo
con la prima destinazione nel grafico b/109909461 - È stato risolto il problema per cui tutti i valori
app:defaultValue
venivano 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:name
nei 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 cuiPagedListAdapter
eAsyncPagedListDiffer
non 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
PagedListAdapter
eAsyncPagedListDiffer
non segnalavano gli eventi di movimento. B/110711937
Responsabile del lavoro
Viene rilasciato WorkManager 1.0.0-alpha04
.
Correzioni di bug
Ora le
PeriodicWorkRequest
vengono 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
JobScheduler
dopo 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
Room
versione1.1.1-rc1
.
Modifiche alle API
È stata aggiunta
getStatusesSync()
, la versione sincrona diWorkContinuation.getStatuses()
.Worker
ha la possibilità di distinguere tra l'annullamento avviato dall'utente e l'interruzione temporanea richiesta dal sistema operativo.Worker.isStopped()
restituiscetrue
se è stato richiesto un qualsiasi tipo di fermata.Worker.isCancelled()
restituiscetrue
quando 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 aJobScheduler
oAlarmManager
. In questo modo,WorkManager
non potrà utilizzare tutti gli slot disponibili perJobScheduler
.È stato aggiunto l'elemento
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
, che aiuta a definire un intervallo diJobScheduler
ID 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 accodarePeriodicWorkRequest
univoci. 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 del comportamento
- È stato aggiunto un tag implicito per tutti i valori
WorkRequest
, ovvero il nome completo della classe perWorker
. Consente di rimuovereWorkRequest
senzatag
o quandoid
non è disponibile. b/109572351
Modifiche che provocano l'interruzione
Worker.WorkerResult
rinominato inWorker.Result
.Worker.onStopped
ora include un parametroisCancelled
aggiuntivo, che è impostato sutrue
quandoWorker
è stato esplicitamente annullato.
7 giugno 2018
Viene rilasciato il navigatore 1.0.0-alpha02
.
Navigazione
Cambiamenti del comportamento
FragmentNavigator
ora utilizzasetReorderingAllowed(true)
. B/109826220La navigazione ora Decodifica gli argomenti analizzati dagli URL dei link diretti. B/79982454
Correzioni di bug
È stato corretto un
IllegalStateException
durante 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
IllegalArgumentException
quando si utilizzava defaultNavHost="true" come frammento figlio. b/79656847È stato corretto un
StackOverflowError
durante l'utilizzo di NavDeepLinkBuilder. b/109653065È stato corretto un
IllegalArgumentException
quando 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
clearTask
per le azioni e l'API associata inNavOptions
è stato deprecato. B/80338878L'attributo
launchDocument
per 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
NullPointerException
suState.isFinished()
. B/79550068È stato risolto un problema che causava la riprogrammazione di
Worker
il 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
AlarmManager
esegue 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
float
inData
. B/79443878Data.Builder.putAll()
ora restituisce un'istanza diBuilder
. B/79699162Altri javadoc e correzioni nella documentazione. B/79691663
Modifiche alle API
Worker
può 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 unSet
di tag associati aWorker
.Sono stati aggiunti
javax.time.Duration
overload per le API che richiedono una combinazione di durata eTimeUnit
. Questa attività è protetta 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 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-rc1
viene 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.Builder
eLivePagedListBuilder
)setMainThreadExecutor()
è stato rinominato insetNotifyExecutor()
(inPagedList.Builder
).
È stato corretto il problema di privato
PagedList.mCallbacks
membro.
Correzioni di bug
LivePagedListBuilder
attiva il caricamento inizialePagedList
sull'esecutore specificato, anziché il pool di thread di I/O di Arch Components.È stato corretto il comportamento di invalidazione nei wrapper
DataSource
interni (utilizzati per implementareDataSource.map
, nonché il caricamento diPositionalDataSource
disattivato con segnaposto) b/77237534
Room
Correzioni di bug
È stato corretto un bug critico nelle implementazioni Rx
Single
eMaybe
della stanza in cui ricicla la query in anticipo, causando problemi se ne aggiungi più di una osservatore alle istanzeSingle
oMaybe
restituite. B/76031240RoomDatabase.clearAllTables non
VACUUM
il 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,
@RawQuery
non accetta più di trasmettereString
come 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 int
anzichévararg Integer
.
Correzioni di bug
RoomDatabase.clearAllTables ora tenta di restituire lo spazio al sistema operativo impostando un checkpoint WAL ed eseguendo
VACUUM
il database.@RawQuery
ora accetta qualsiasi Pojo per la proprietàobservedEntities
, purché il Pojo faccia riferimento a una o più entità tramite i suoi campiEmbedded
oRelation
. 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.LoadParams
hanno ora un costruttore pubblico, mentre gli oggettiDataSource.LoadCallback
sono astratti. In questo modo è possibile eseguire il wrapping di unDataSource
o testare direttamente unDataSource
con 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.extensions
eLivePagedListProvider
. 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.onItemAtEndLoaded
non veniva richiamato perPositionalDataSource
se 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
addObserver
eremoveObserver
di 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/63807999SupportSQLiteQuery
ora 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
Dao
di classi per evitare conflitti di nomi quando Due o più interfacceDao
sono classi interne nello stesso pacchetto e hanno lo con lo stesso nome. b/73536380I tipi di campo generici nei campi
Pojo
vengono analizzati correttamente come membri dell'estensione . b/73534868Parametri di ricerca in
Dao
interfacce ereditati dalla dipendenza gli artefatti vengono ora analizzati correttamente. b/68118746Le query generate per
@Relation
ora 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
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->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-alpha6
ecom.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
ListAdapterHelper
inAsyncListDiffer
- .
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
ListAdapterConfig
inAsyncDifferConfig
- Aggiorna tutti i riferimenti di
DiffCallback
inDiffUtil.IttemCallback
- Aggiorna tutti i riferimenti di
PagedListAdapterHelper
inAsyncPagedListDiffer
- 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 16
e 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>
inDAO
query. Per usareListenableFuture<T>
, devi importareguava
artefatto da Room (android.arch.persistence.room:guava:1.1.0-alpha2
).La stanza virtuale ora supporta la restituzione di
java.util.Optional<T>
daDAO
query.I metodi dell'interfaccia con implementazioni predefinite sono ora supportati in
@Transaction
metodi inDAO
classi. Questa operazione è valida sia perJava 8
Kotlin
. B/72416735
Correzioni di bug
I costruttori con
@Relation
non causeranno un errore di compilazione se: e un altro costruttore utilizzabile. b/72884434I nomi delle tabelle con caratteri di escape
'
nei metodi@Query
ora contengono caratteri di escape corretti per il tracker delle invalidazioni. B/72366965La stanza virtuale ora utilizza le annotazioni
@Metadata
di 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.0
android.arch.lifecycle:viewmodel:1.1.0
Modifiche alle API
- Gli elementi
LifecycleActivity
eLifecycleFragment
deprecati sono stati rimossi. UtilizzaFragmentActivity
,AppCompatActivity
o assistenzaFragment
. @NonNull
annotazioni sono state aggiunte aViewModelProviders
eViewModelStores
- 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 unFactory
statico adatto per la creazione di istanzeViewModel
eAndroidViewModel
.
Stanza 1.1.0-alpha1
Nuove funzionalità
RawQuery
: questa nuova API consente ai metodi@Dao
di ricevere il codice SQL come parametro di query b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: questa nuova API inRoomDatabase.Builder
consente 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-4
o superiore e passa 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 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
PagedList
nel thread dell'interfaccia utente. - Comportamento più chiaro degli errori relativi ai parametri del caricamento iniziale
Il nuovo nome di
TiledDataSource
èPositionalDataSource
per riflettere la sua l'indicizzazione in base alla posizione e il fatto che non si affianca quando i segnaposto vengono disattivata.PageKeyedDataSource
aggiunto per supportare i token successivi/precedenti incorporati in viene caricata la pagina di rete.KeyedDataSource
rinominato inItemKeyedDataSource
per rendere la differenza.LivePagedListBuilder
eDataSource.Factory
sostituisconoLivePagedListProvider
. Lo strumento di creazione offre le stesse funzionalità personalizzazione e predefiniti più semplici. Il produttore consente la generazione diDataSource
per rimanere indipendenti daLiveData
.PagedList.BoundaryCallback
aggiunto per il caso d'uso del database + della rete.Il costruttore
PagedList.Builder
richiedeDataSource
+PagedList.Config
, ora più simile aLivePagedListBuilder
e consente l'operatore diamante in linguaggio Java o tipi dedotti in Kotlin.PagedList.getConfig()
aggiunto, poiPagedList.Config
ha 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
LiveDataReactiveStreams
implementa 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_STOP
quando ChiamataonSaveInstanceState
(precedente, era appena stata contrassegnata comeCREATED
senza 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
OutOfMemory
problemi durante la compilazione. b/62473121 - Ora i metodi di
Query
possono essere annotati con@Transaction
. Per informazioni dettagliate, consulta la documentazione di riferimento su@Transaction
. b/65112315 StringUtil
corso 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:
LiveData
funziona correttamente quando l'attività è parzialmente coperta nell'API < 24, b/65665621I metodi
OnLifecycleEvent
nelle 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
WeakReference
LifecycleOwner 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
LiveDataReactiveStreams
annulla correttamente l'iscrizione alla fonte publisher quandoLiveData
non è 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
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 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
@Query
ha un campo@NonNull
che 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
Nullable
se si tratta di unInteger
oLong
. 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.0
o 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.0
dal 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.1
modulo 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.db
android.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
transient
vengono ora 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:
- Documentazione di paging migliorata con più esempi e annotazioni nei thread.
Correzioni di bug
- Stanza:
- Le stringhe multilinea Kotlin nei metodi
@Query
vengono 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
@Generated
se 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
WITH
ora 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 NULL
viene 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
observer1
viene aggiunto prima del giornoobserver2
, riceverà il giornoON_CREATE
e 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 è: seobserver1
viene aggiunto prima diobserver2
,ON_CREATE
viene inviato prima aobserver1
e poi aobserver2
(lo stesso accade perON_START
eON_RESUME
), ma l'eventoON_PAUSE
viene inviato prima aobserver2
e solo allora aobserver1
(lo stesso perON_STOP
eON_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.Builder
a 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.Builder
per osservare quando viene creato o aperto un database. b/62699324@Query ora potrebbe restituire RxJava
Maybe
oSingle
. 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
@Delete
senza 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
,@Delete
e@Update
possono 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
@OnLifecycleEvent
ora 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
LifecycleActivity
eLifecycleFragment
sono state spostate nell'elementoandroid.arch.lifecycle:extensions
.MigrationTestHelper riceve l'istanza Instrumentation anziché
Context
per poter leggere lo schema dagli asset di test e creare del database nel contesto dell'applicazione.Annotazioni
@Insert
,@Delete
e@Update
nei metodi@DAO
ora può 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
vengono gestiti correttamente. b/62608681Ora le classi DAO astratti possono avere un costruttore che riceve
@Database
in esecuzione in un'istanza Compute Engine. b/38488747Gli utenti di
DAO
ora 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@Insert
query.
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
Fragment
eActivityCompat
nella Libreria di supporto non implementano ancora l'interfacciaLifecycleOwner
. Lo faranno quando Architecture Components raggiungerà la versione 1.0.0.