Archivio delle note di rilascio dei componenti dell'architettura

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

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 con menuCategory="secondary" non verranno più inseriti nello stack posteriore se utilizzati con i metodi NavigationUI. b/120104424
  • AppBarConfiguration ora consente di impostare un'istanza OnNavigateUpListener di riserva che verrà chiamata quando navController.navigateUp() restituisce false. b/79993862 b/120690961

Modifiche che provocano un errore

  • Quando utilizzi un <argument> con un argType="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 metodi setup. Aggiungi menuCategory="secondary" a MenuItem per evitare di aprire lo stack posteriore. aosp/852869
  • I metodi fromBundle() delle classi Args generate ora utilizzano un valore non null Bundle anziché un valore null Bundle 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 di ListenableWorker. In questo modo si evitano conflitti di refactoring con la classe Result 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 di ListenableWorker.

6 dicembre 2018

Cercapersone

Paging di 2.1.0-rc01 senza modifiche rispetto a 2.1.0-beta01.

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} in android: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 in OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener ora passa anche Bundle degli argomenti aosp/837142
  • Gli attributi app:clearTask e app:launchDocument e i relativi metodi associati sono stati rimossi. Utilizza app:popUpTo con la radice del grafico per rimuovere tutte le destinazioni dallo stack posteriore. b/119628354
  • ActivityNavigator.Extras ora utilizza un pattern Builder e aggiunge la possibilità di impostare qualsiasi flag Intent.FLAG_ACTIVITY_ aosp/828140
  • Il nome di NavController.onHandleDeepLink è stato rinominato handleDeepLink aosp/836063
  • Molti metodi e classi non pensati per le sottoclassifiche, come NavOptions, NavInflater, NavDeepLinkBuilder e AppBarConfiguration, sono stati creati final 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 una FragmentFactory. B/119054429
  • Il costruttore per NavGraphNavigator non richiede più un Context aosp/835340
  • NavigatorProvider è ora una classe, non un'interfaccia. Il NavigatorProvider restituito da getNavigatorProvider() non ha modificato la sua funzionalità. aosp/830660
  • L'utente NavDestination.navigate() è stato rimosso. Chiama navigate() sul servizio Navigator. aosp/830663
  • Refactoring significativo di Navigator, che elimina la necessità di OnNavigatorNavigatedListener e fa sì che navigate restituisca il valore NavDestination raggiunto.
  • Navigator istanza non può più inviare eventi pop a NavController. Valuta l'utilizzo di un elemento OnBackPressedCallback per intercettare le pressioni del pulsante Indietro e chiamare navController.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 chiamando toString() 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, introduce RxWorker. Questo è un ListenableWorker che prevede Single<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 in Result. Result è ora una "classe sigillata" con tre implementazioni concrete, che puoi ottenere tramite Result.success() (o Result.success(Data)), Result.failure() (o Result.failure(Data)) e Result.retry(). I tuoi ListenableFuture ora generano Result anziché Payload. Gli elementi Worker non hanno metodi getter e setter per l'output Data. 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() e ListenableFuture.await().
  • Operation.getException() rinominato in Operation.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 e OneTimeWorkRequest per semplificare l'API. Per risolvere eventuali problemi di build, puoi includere le variabili vararg esistenti con Arrays.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 metodi combine 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 tramite observeForever 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à un WorkInfo con State CANCELLED nel mese di ListenableWorker.onStopped().
  • Tratta null Result come non riusciti in ListenableWorker. 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 in Result. Result è ora una "classe sigillata" con tre implementazioni concrete, che puoi ottenere tramite Result.success() (o Result.success(Data)), Result.failure() (o Result.failure(Data)) e Result.retry(). I tuoi ListenableFuture ora generano Result anziché Payload. Gli elementi Worker non hanno metodi getter e setter per l'output Data.
  • Aggiunti metodi di estensione Kotlin Operation.await() e ListenableFuture.await().
  • Operation.getException() rinominato in Operation.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 e OneTimeWorkRequest per semplificare l'API. Per risolvere eventuali problemi di build, puoi includere le variabili vararg esistenti con Arrays.asList(...). Vengono comunque incluse versioni con un singolo argomento di ogni metodo.
  • Rimosse WorkContinuation.combine(OneTimeWorkRequest, *) varianti. Stava presentando un'API confusa; i metodi combine 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 in FtsOptions 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 supportano ListenableFuture 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'espressione IN. 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 nuovo CoroutineWorker.
  • WorkStatus è stato rinominato in WorkInfo. Tutte le varianti del metodo getStatus corrispondenti sono state rinominate nelle varianti getWorkInfo corrispondenti. Questo è un cambiamento che provoca un errore.
  • ListenableWorker.onStopped() non accetta più ha un argomento booleano che rappresenta se WorkRequest è stato annullato. WorkManager non fa più questa distinzione. Questo è un cambiamento che provoca un errore.
  • Il pacchetto androidx.work.test è stato rinominato come pacchetto androidx.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() e WorkerParameters.getTriggeredContentAuthorities() hanno restituito in precedenza array. Ora questi metodi restituiscono raccolte. Questo è un cambiamento che provoca un errore.
  • ListenableWorker.onStartWork() è stato rinominato come ListenableWorker.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() e Configuration.getMinJobSchedulerID() sono stati rinominati rispettivamente Configuration.getMinJobSchedulerId() e Configuration.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 accodare OneTimeWorkRequest univoche senza dover creare un WorkContinuation.
  • Tutte le varianti dei metodi enqueue e cancel su WorkManager ora restituiscono un nuovo tipo Operation. Questo è un cambiamento che provoca un errore.
  • Tutte le varianti di enqueue non accettano più vararg per WorkRequest. Questo è un cambiamento che provoca un errore. Utilizza le Raccolte. Puoi usare Arrays.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 un IllegalStateException. Questo è un cambiamento che provoca un errore.

Correzioni di bug

  • WorkRequest.Builder nell'elemento work-runtime-ktx ora utilizzano ListenableWorker. 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 in WorkInfo. Tutte le varianti del metodo getStatus corrispondenti sono state rinominate nelle varianti getWorkInfo corrispondenti.
  • ListenableWorker.onStopped() non accetta più ha un argomento booleano che rappresenta se WorkRequest è stato annullato. WorkManager non fa più questa distinzione.
  • Il pacchetto androidx.work.test è stato rinominato come pacchetto androidx.work.testing.
  • I setter su Constraints non fanno più parte dell'API pubblica.
  • WorkerParameters.getTriggeredContentUris() e WorkerParameters.getTriggeredContentAuthorities() hanno restituito in precedenza array. Ora questi metodi restituiscono raccolte.
  • ListenableWorker.onStartWork() è stato rinominato come ListenableWorker.startWork().
  • Il costruttore di WorkStatus non fa più parte dell'API pubblica.
  • Configuration.getMaxJobSchedulerID() e Configuration.getMinJobSchedulerID() sono stati rinominati rispettivamente Configuration.getMinJobSchedulerId() e Configuration.getMaxJobSchedulerId().
  • Tutte le varianti dei metodi enqueue e cancel su WorkManager ora restituiscono un nuovo tipo Operation.
  • Tutte le varianti di enqueue non accettano più vararg per WorkRequest.
  • Se si tenta di initialize WorkManager più di una volta per processo, verrà restituito un IllegalStateException.

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

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 nella navigation-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 per PagedList.Config.Builder
  • androidx.paging.PagedList() aggiunto come alternativa Kotlin per PagedList.Builder
  • DataSourceFactory.toLiveData() aggiunto come alternativa Kotlin per LivePagedListBuilder
  • DataSourceFactory.toObservable() e toFlowable() aggiunti come alternative di Kotlin per RxPagedListBuilder
  • 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 genera IndexOutOfBoundsException 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 costruttore Worker predefinito. Questa è una modifica che provoca un errore di API.
  • NonBlockingWorker è stato rinominato in ListenableWorker, 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, aggiorna ListenableFuture in modo appropriato. Le implementazioni di riferimento dei valori ListenableFuture sono fornite nel pacchetto Futures in alpha02 (vedi sotto la sezione WorkManager).
    • Worker estende ListenableWorker e funziona ancora come prima, con un metodo Result doWork() astratto.
    • Alcuni metodi e membri sono stati riprodotti in modo casuale da Worker a ListenableWorker.
    • 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 concreta DefaultWorkerFactory sono state unite in una classe astratta chiamata WorkerFactory. L'implementazione assicura che il comportamento predefinito basato sul riflesso venga definito come ultimo sforzo per qualsiasi istanza WorkerFactory creata dall'utente. Questo è un cambiamento che provoca un errore.
  • WorkManager.synchronous() e WorkContinuation.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() restituisce void, ora restituisce ListenableFuture<Void>. Puoi chiamare ListenableFuture.addListener(Runnable, Executor) o ListenableFuture.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 di Future.
    • Per mantenere la parità con i metodi sincroni getStatus*, abbiamo fornito ListenableFuture varianti e rinominato quelli esistenti che hanno restituito LiveData 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.

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 eliminando exclude '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 è stato REPLACEd. 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 costruttore Worker predefinito.
  • L'interfaccia WorkerFactory e l'implementazione concreta DefaultWorkerFactory sono state unite in una classe astratta chiamata WorkerFactory.
  • WorkManager.synchronous() e WorkContinuation.synchronous() rimosse.
  • WorkManager.getStatus*() metodi ora restituiscono ListenableFuture. WorkManager.getStatus*LiveData() ha restituito LiveData.

Contratti a termine

Il future 1.0.0-alpha02 viene rilasciato.

Modifiche alle API

  • Ora gli sviluppatori possono usare ResolvableFuture e AbstractResolvableFuture come implementazioni concrete e leggere di ListenableFuture.

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 Rx Completable, Single<T> e Maybe<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 in RoomDatabase.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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: è una nuova API in RoomDatabase.Builder che ricrea automaticamente il database in caso di downgrade. b/110416954
  • ignoredColumns: è 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 e mDatabase in RoomDatabase 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

La navigazione 1.0.0-alpha06 è stata rilasciata con correzioni di bug e modifiche all'API.

Nuove funzionalità

Modifiche alle API

  • Modifica che provoca un errore: ora il metodo navigate() di navigazione utilizza un parametro Navigator.Extras.
  • Il metodo getGraph() di NavController è ora NonNull 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 al Worker 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 un WorkerFactory come parte di WorkManager.Configuration. Il fabbrica di riserva è DefaultWorkerFactory, che corrisponde al comportamento delle versioni precedenti di WorkManager.
    • I costruttori predefiniti per Worker e NonBlockingWorker sono ora contrassegnati come deprecati. Utilizza il nuovo costruttore (Worker(Context, WorkerParameters)) e chiama super(Context, WorkerParameters); le versioni future di WorkManager rimuoveranno il costruttore predefinito.
  • 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 di NonBlockingWorker.
  • Aggiunta la possibilità di attivare il lavoro a tempo in TestDriver tramite TestDriver.setInitialDelayMet(UUID) e TestDriver.setPeriodDelayMet(UUID). B/113360060

Modifiche che provocano un errore

  • I costruttori predefiniti Worker e NonBlockingWorker 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 di JobScheduler. 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 in ConstraintTracker. B/112272753
  • Le annotazioni del tipo restituito Data.getBooleanArray(String) e Data.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) e Data.getIntArray(String) sono state modificate in @Nullable anziché @NonNull. B/112275229
  • Estensioni Kotlin: ritiro di Map.toWorkData() e aggiunta di workDataOf(vararg Pair<String, Any?>) di primo livello per una maggiore coerenza con le API esistenti.

10 agosto 2018

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 utilizzi WorkRequest.Builder#build(). B/111408337
  • Abilita l'utilizzo di RescheduleReceiver solo quando sono presenti WorkRequest 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 un IllegalStateException. 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 registra Log.INFO e versioni successive.
  • È stata modificata la firma di Data.getString() in modo che non venga più utilizzato un valore predefinito (è implicitamente null). 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 costruttore Constraints, Data.toByteArray() e Data.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 utilizza JobScheduler. 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 il WorkRequest 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 (è implicitamente null).
  • Alcuni metodi sono stati contrassegnati come @hide necessari solo per l'utilizzo interno. Include il costruttore Constraints, Data.toByteArray() e Data.fromByteArray(byte[]).

19 luglio 2018

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 in app: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

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
  • 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() e hashCode() 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 cui PagedListAdapter e AsyncPagedListDiffer 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 e AsyncPagedListDiffer 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 su AlarmManager.

  • 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 versione 1.1.1-rc1.

Modifiche alle API

  • È stata aggiunta getStatusesSync(), la versione sincrona di WorkContinuation.getStatuses().

  • Worker è in grado di distinguere tra annullamento avviato dall'utente e interruzione temporanea richiesta dal sistema operativo. Worker.isStopped() restituisce true se è stato richiesto un qualsiasi tipo di interruzione. Worker.isCancelled() restituisce true quando l'opera è stata esplicitamente annullata. b/79632247

  • Aggiungi 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 a JobScheduler o AlarmManager. In questo modo puoi evitare che WorkManager utilizzi tutti i tuoi slot disponibili (JobScheduler).

  • È stato aggiunto Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), che consente di definire un intervallo di ID job JobScheduler che possono essere utilizzati da WorkManager in sicurezza. b/79996760

  • Worker.getRunAttemptCount() restituisce il conteggio delle esecuzioni correnti per un determinato Worker. 79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) ti consente di accodare un PeriodicWorkRequest univoco. b/79600647

  • WorkManager.cancelAllWork() annulla tutti i Worker. Le librerie che dipendono da WorkManager possono eseguire query quando questo metodo è stato chiamato per ultimo utilizzando WorkManager.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 classe Worker. In questo modo è possibile rimuovere WorkRequest senza tag o quando id non è disponibile. b/109572351

Modifiche che provocano un errore

  • Worker.WorkerResult rinominato in Worker.Result.

  • Ora Worker.onStopped ha un parametro isCancelled aggiuntivo che è impostato sutrue quando Worker è stato esplicitamente annullato.

7 giugno 2018

La navigazione 1.0.0-alpha02 è stata rilasciata.

Cambiamenti di comportamento

  • FragmentNavigator ora utilizza setReorderingAllowed(true). B/109826220

  • La 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/79632233

  • La 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/80453447

  • Risolto il problema di sovrapposizione dei frammenti durante l'utilizzo di launchSingleTop. 79407969

  • La 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 in NavOptions è stato ritirato. b/80338878

  • L'attributo launchDocument per le azioni e l'API associata in NavOptions è 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 giorno State.isFinished(). B/79550068

  • Risolto un problema che causava la riprogrammazione di Worker per il giorno Application.onCreate(). B/79660657

  • Risolto 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 in Data. B/79443878

  • Data.Builder.putAll() ora restituisce un'istanza di Builder. B/79699162

  • Ulteriori 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 se Worker è stato arrestato. Worker.onStopped() può essere utilizzato per eseguire operazioni di pulizia leggere.

  • L'API Worker.getTags() restituisce un Set di tag associati a Worker.

  • Sono stati aggiunti javax.time.Duration sovraccarichi per le API che richiedono una combinazione di durata e TimeUnit s. Questo campo è protetto da @RequiresApi(26).

  • WorkManager estensioni sono state spostate dal pacchetto androidx.work.ktx al pacchetto androidx.work. Le estensioni precedenti sono deprecate e verranno rimosse in una versione futura.

  • L'API Configuration.withExecutor() è deprecata. Usa invece il criterio Configuration.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 elemento android.arch.paging:rxjava2.

Modifiche alle API

  • Modifiche all'API per chiarire il ruolo degli esecutori nei builder:

    • Rinominato setBackgroundThreadExecutor() in setFetchExecutor() (in PagedList.Builder e LivePagedListBuilder)

    • Rinominato setMainThreadExecutor() in setNotifyExecutor() (in PagedList.Builder).

  • È stato corretto lo stato privato del membro di PagedList.mCallbacks.

Correzioni di bug

  • LivePagedListBuilder attiva il caricamento PagedList 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 implementare DataSource.map, e il caricamento PositionalDataSource disabilitato tramite segnaposto) b/77237534

Room

Correzioni di bug

  • Risolto un bug critico nelle implementazioni Rx Single e Maybe di Room per il quale riciclava in anticipo la query, causando problemi se aggiungessi più di un osservatore alle istanze Single o Maybe restituite. b/76031240

  • RoomDatabase.clearAllTables non VACUUMerà 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

Correzioni di bug

  • RoomDatabase.clearAllTables ora tenta di restituire lo spazio al sistema operativo impostando un checkpoint WAL e VACUUMcaricando il database.

  • @RawQuery ora accetta qualsiasi Pojo per la proprietà observedEntities, purché il Pojo faccia riferimento a una o più entità tramite i relativi campi Embedded o Relation. b/74041772

  • Paging: 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 e DataSource.LoadCallback oggetti ora sono astratti. In questo modo è possibile includere un DataSource o testare direttamente un DataSource 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 elemento DataSource.
    • 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 e LivePagedListProvider.
  • 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 per PositionalDataSource 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 e removeObserver 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/63807999

  • SupportSQLiteQuery ora dispone di un metodo getArgCount() che restituisce il numero di parametri di query. b/67038952

Correzioni di bug

  • Ora @RawQuery è correttamente supportato per le query di paging. b/72600425

  • I nomi delle stanze ora generano correttamente le classi Dao per evitare conflitti di nomi quando 2 o più interfacce Dao sono classi interne nello stesso pacchetto e hanno lo stesso nome. b/73536380

  • I tipi di campo generici nei campi Pojo vengono analizzati correttamente come membri della classe espandibile. b/73534868

  • Ora i parametri di query nelle interfacce Dao che vengono ereditati dagli artefatti delle dipendenze vengono analizzati correttamente. b/68118746

  • Le 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 e com.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 in AsyncListDiffer
    • Sono stati rimossi getItem(index)/getItemCount() a favore del pattern di chiamata getCurrentList().getItem(index) e getCurrentList().size(), che sono più espliciti.
  • Aggiorna tutti i riferimenti di ListAdapterConfig in AsyncDifferConfig
  • Aggiorna tutti i riferimenti di DiffCallback in DiffUtil.IttemCallback
  • Aggiorna tutti i riferimenti di PagedListAdapterHelper in AsyncPagedListDiffer
  • Aggiorna i riferimenti di setList() a submitList()
    • 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 metodo setJournalMode() su RoomDatabase.Builder. B/67757002

  • Assistenza Guava: Room ora supporta la restituzione di Guava Optional<T> o ListenableFuture<T> nelle query DAO. Per utilizzare ListenableFuture<T>, devi importare guava elemento dalla stanza virtuale (android.arch.persistence.room:guava:1.1.0-alpha2).

  • La stanza ora supporta la restituzione di java.util.Optional<T> da DAO query.

  • I metodi di interfaccia con implementazioni predefinite sono ora supportati nei metodi @Transaction nelle classi DAO. Questo vale sia per Java 8 sia per Kotlin. B/72416735

Correzioni di bug

  • I costruttori con @Relation non causeranno un errore di compilazione se è possibile utilizzare un altro costruttore. b/72884434

  • I 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/72366965

  • Room 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 e LifecycleFragment deprecate sono state rimosse. Utilizza FragmentActivity, AppCompatActivity o l'assistenza Fragment.
  • @NonNull annotazioni sono state aggiunte a ViewModelProviders e ViewModelStores
  • Il costruttore ViewModelProviders è stato ritirato. Utilizza direttamente i relativi metodi statici
  • L'API ViewModelProviders.DefaultFactory è stata ritirata. Utilizza ViewModelProvider.AndroidViewModelFactory
  • È stato aggiunto il metodo ViewModelProvider.AndroidViewModelFactory.getInstance(Application) statico per recuperare una Factory statica adatta per creare istanze ViewModel e AndroidViewModel.

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/71458963
  • fallBackToDestructiveMigrationsFrom: questa nuova API in RoomDatabase.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 paging alpha-4 o superiore e passare da LivePagedListProvider a LivePagedListBuilder 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 in PositionalDataSource 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 in ItemKeyedDataSource per chiarire le differenze.

  • LivePagedListBuilder e DataSource.Factory sostituiscono LivePagedListProvider. Il builder offre la stessa funzionalità con una maggiore personalizzazione e valori predefiniti più semplici. La fabbrica consente al codice di generazione DataSource di rimanere indipendente da LiveData.

  • PagedList.BoundaryCallback aggiunto per il caso d'uso database e rete.

  • Il costruttore PagedList.Builder utilizza DataSource + PagedList.Config, ora più simile a LivePagedListBuilder, e consente l'operatore diamante in linguaggio Java o i tipi dedotti in Kotlin.

  • PagedList.getConfig() è stato aggiunto e PagedList.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

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 chiamato onSaveInstanceState (in precedenza era contrassegnato come CREATED senza inviare ON_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).
  • Cicli di vita:

    • LiveData funziona correttamente quando l'attività è parzialmente coperta nell'API < 24. b/65665621

    • I metodi OnLifecycleEvent nelle classi padre ora vengono chiamati correttamente o viene stampato un avviso durante la compilazione, se non è possibile. b/63474615

    • Ciclo 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 il Lifecycle).

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 quando LiveData 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/66525578

    • Per 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>(...);}
  • 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 o Long. 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

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 Library 26.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 modulo android.arch.lifecycle:common:1.0.1 per utilizzare il nuovo artefatto common-java8. Questo problema verrà risolto tra beta2.

Modifiche relative alla confezione

  • android.arch.persistence.room.db è stato spostato in android.arch.persistence.db
  • android.arch.persistence.room.db-impl è stato spostato e rinominato in android.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:

  • 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
  • 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

Correzioni di bug

  • Le classi generate ora sono annotate con @Generated se l'app ha l'annotazione nel classpath. b/35754819

  • Corretto il bug relativo al confronto con l'osservatore di MediatorLiveData. b/64413274

  • Le query SQLite WITH sono ora supportate con [LiveData]. [ref-LiveData] b/62510164

  • Risolto 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

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 metodo fallbackToDestructiveMigration() nel builder. b/62007004

Modifiche alle API

1.0.0 Alpha 7 - 26 luglio 2017

Correzioni di bug

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 giorno observer2, riceverà ON_CREATE e tutti gli altri eventi prima del giorno observer2. 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: se observer1 viene aggiunto prima del giorno observer2, ON_CREATE viene inviato prima a observer1 e poi a observer2 (lo stesso avviene per ON_START e ON_RESUME), ma l'evento ON_PAUSE viene prima inviato a observer2 e solo in seguito a observer1 (lo stesso per ON_STOP e ON_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() a RoomDatabase.Builder per cancellare il database in caso di mancata migrazione. b/63872392

  • I 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

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/63608092

  • Corretto 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/62460045

  • Il 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 tipo Event (il primo parametro è LifecycleOwner). Per informazioni dettagliate, consulta la documentazione sul ciclo di vita.

  • Le classi LifecycleActivity e LifecycleFragment vengono spostate nell'elemento android.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 avere Iterable 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/62608681

  • Ora le classi DAO astratte possono avere un costruttore che riceve l'istanza @Database. b/38488747

  • DAO ora può avere una superclasse/interfaccia con parametri di tipo. b/62103620

1.0.0 Alpha 2 - 2 giugno 2017

Modifiche alle API

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