Archivio delle note di rilascio dei componenti dell'architettura

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

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 con menuCategory="secondary" non torneranno più indietro stack quando utilizzato con i metodi NavigationUI. b/120104424
  • AppBarConfiguration ora ti consente di impostare una proprietà di riserva OnNavigateUpListener che verrà chiamata quando navController.navigateUp() restituirà false, B/79993862 B/120690961

Modifiche che provocano l'interruzione

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

6 dicembre 2018

Cercapersone

Il paging di 2.1.0-rc01 viene rilasciato senza modifiche da 2.1.0-beta01.

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 in android: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 in OnDestinationChangedListener B/118670572
  • Ora OnDestinationChangedListener passa anche il Bundle degli argomenti aosp/837142
  • Attributi app:clearTask e app:launchDocument e relativi attributi associati sono stati rimossi. Usa app:popUpTo con la radice del grafico per rimuovi tutte le destinazioni dal tuo back Stack. b/119628354
  • ActivityNavigator.Extras ora utilizza un pattern Builder e aggiunge la possibilità di imposta qualsiasi flag Intent.FLAG_ACTIVITY_ aosp/828140
  • NavController.onHandleDeepLink è stato rinominato in handleDeepLink aosp/836063
  • Molti metodi e classi non pensati per la creazione di sottoclassi, come NavOptions, NavInflater, NavDeepLinkBuilder e AppBarConfiguration, è stata effettuata 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, così è più facile delega la creazione di frammenti a un FragmentFactory. B/119054429
  • Il costruttore per NavGraphNavigator non richiede più un Context aosp/835340
  • NavigatorProvider è ora una classe, piuttosto che un'interfaccia. NavigatorProvider restituito da getNavigatorProvider() non ha modificato la sua funzionalità. aosp/830660
  • L'utente NavDestination.navigate() è stato rimosso. Chiama navigate() su Navigator . aosp/830663
  • Refactoring significativo di Navigator, che elimina la necessità di OnNavigatorNavigatedListener e invece navigate restituisce il NavDestination a cui è stato raggiunto.
  • Navigator istanze non possono più inviare eventi pop a NavController. Prendi in considerazione utilizzando un OnBackPressedCallback per intercetta le pressioni del pulsante Indietro e richiama navController.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 richiamando toString() 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, introduce RxWorker. Questo è un ListenableWorker che prevede un Single<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 in Result. Result è ora una "classe protetta" con tre implementazioni concrete, ottenibili 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. Si tratta di una modifica che provoca un errore.
  • Sono stati aggiunti Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) e Constraints.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() e ListenableFuture.await().
  • Operation.getException() rinominato in Operation.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 e OneTimeWorkRequest per semplificare l'API. Per risolvere eventuali problemi di build, puoi aggregare le variabili esistenti con Arrays.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 metodi combine 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 tramite observeForever viene monitorato tramite WorkManager. Questo è un backport di una correzione relativa alla libreria delle stanze. B/74477406
  • Data.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à un WorkInfo con i CANCELLED di State nei giorni ListenableWorker.onStopped().
  • Considera null Result come errori in ListenableWorker. 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 in Result. Result è ora una "classe protetta" con tre implementazioni concrete, ottenibili 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 e i metodi ContentUriTriggers che fanno riferimento non sono più disponibili per il pubblico.
  • Sono stati rimossi gli altri metodi varargs in WorkManager, WorkContinuation e OneTimeWorkRequest per semplificare l'API. Per risolvere eventuali problemi di build, puoi aggregare le variabili esistenti con Arrays.asList(...). Includiamo comunque versioni a singolo argomento di ciascun metodo.
  • Sono state rimosse WorkContinuation.combine(OneTimeWorkRequest, *) varianti. L'API era confusa; i metodi combine 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 in FtsOptions 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 supportano ListenableFuture 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'espressione IN. 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 nuovo CoroutineWorker.
  • WorkStatus è stato rinominato in WorkInfo. Tutte le varianti del metodo getStatus corrispondenti sono state rinominate in getWorkInfo varianti corrispondenti. Si tratta di una modifica che provoca un errore.
  • ListenableWorker.onStopped() non accetta più un argomento booleano che rappresenta se WorkRequest è 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 pacchetto androidx.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() e WorkerParameters.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 in ListenableWorker.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() e Configuration.getMinJobSchedulerID() sono stati rinominati Configuration.getMinJobSchedulerId() e Configuration.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 accodare OneTimeWorkRequest univoci senza dover creare un WorkContinuation.
  • Tutte le varianti dei metodi enqueue e cancel su WorkManager ora restituiscono un nuovo tipo di Operation. Si tratta di una modifica che provoca un errore.
  • Tutte le varianti di enqueue non accettano più vararg per WorkRequest. Si tratta di una modifica che provoca un errore. Utilizza le raccolte. Puoi utilizzare Arrays.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 un IllegalStateException. Si tratta di una modifica che provoca un errore.

Correzioni di bug

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

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

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 piegato navigation-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 per PagedList.Config.Builder
  • androidx.paging.PagedList() aggiunta come alternativa a Kotlin per PagedList.Builder
  • DataSourceFactory.toLiveData() aggiunta come alternativa a Kotlin per LivePagedListBuilder
  • DataSourceFactory.toObservable() e toFlowable() aggiunti come alternative a Kotlin per RxPagedListBuilder
  • 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 genera IndexOutOfBoundsException 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
di Gemini Advanced.

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 costruttore Worker predefinito. Si tratta di una modifica API che provoca un errore.
  • NonBlockingWorker è stato rinominato in ListenableWorker, 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 aggiornare ListenableFuture in modo appropriato. Le implementazioni di riferimento degli elementi 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.
    • Riproduzione casuale di alcuni metodi e membri da Worker a ListenableWorker.
    • 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 concreta DefaultWorkerFactory sono state unite in una classe astratta chiamata WorkerFactory. L'implementazione garantisce che il comportamento predefinito basato sulla riflessione venga chiamato come un ultimo sforzo per qualsiasi istanza WorkerFactory creata dall'utente. Si tratta di una modifica che provoca un errore.
  • WorkManager.synchronous() e WorkContinuation.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 restituire void; ora restituisce un ListenableFuture<Void>. Puoi chiamare ListenableFuture.addListener(Runnable, Executor) o ListenableFuture.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 di Future.
    • Per mantenere la parità con i metodi getStatus* sincroni, abbiamo fornito ListenableFuture varianti e abbiamo rinominato quelli esistenti che hanno restituito LiveData in modo che abbiano esplicitamente "LiveData" all'interno del nome (ad esempio getStatusesByIdLiveData(UUID)). Si tratta di una modifica API che provoca un errore.

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 eliminando exclude '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 è stato REPLACEd. 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 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() rimossi.
  • I metodi WorkManager.getStatus*() ora restituiscono ListenableFuture s. WorkManager.getStatus*LiveData() restituisce LiveData sec.

Contratti a termine

Futures 1.0.0-alpha02 rilasciato.

Modifiche alle API

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

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 Rx Completable, Single<T> e Maybe<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 in RoomDatabase.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/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 per nome. Utile per ignorare i campi ereditati su un'entità. B/63522075

Modifiche al comportamento / API

  • mCallback e mDatabase in RoomDatabase 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

Il sistema di navigazione 1.0.0-alpha06 viene rilasciato con correzioni di bug e modifiche all'API.

Nuove funzionalità

Modifiche alle API

  • Modifica di interruzione: il metodo navigate() di navigazione ora richiede un parametro Navigator.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 un WorkerFactory come parte di WorkManager.Configuration. Il valore di 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. Usa il nuovo costruttore (Worker(Context, WorkerParameters)) e chiama super(Context, WorkerParameters). le versioni future di WorkManager rimuoverà il costruttore predefinito.
  • 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 di NonBlockingWorker.
  • Aggiungi la possibilità di attivare il lavoro a tempo in TestDriver tramite TestDriver.setInitialDelayMet(UUID) e TestDriver.setPeriodDelayMet(UUID). B/113360060

Modifiche che provocano l'interruzione

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

10 agosto 2018

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

19 luglio 2018

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

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

Modifiche alle API

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

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

  • Aggiungi 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 a JobScheduler o AlarmManager. In questo modo, WorkManager non potrà utilizzare tutti gli slot disponibili per JobScheduler.

  • È stato aggiunto l'elemento Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId), che aiuta a definire un intervallo di JobScheduler ID job sicuro per l'utilizzo da parte di WorkManager. b/79996760

  • Worker.getRunAttemptCount() restituisce il conteggio delle esecuzioni attuali per un determinato Worker. B/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) ti consente di accodare PeriodicWorkRequest univoci. 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 del comportamento

  • È stato aggiunto un tag implicito per tutti i valori WorkRequest, ovvero il nome completo della classe per Worker. Consente di rimuovere WorkRequest senza tag o quando id non è disponibile. b/109572351

Modifiche che provocano l'interruzione

  • Worker.WorkerResult rinominato in Worker.Result.

  • Worker.onStopped ora include un parametro isCancelled aggiuntivo, che è impostato sutrue quando Worker è stato esplicitamente annullato.

7 giugno 2018

Viene rilasciato il navigatore 1.0.0-alpha02.

Cambiamenti del comportamento

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

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

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

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

  • L'attributo launchDocument per le azioni e l'API associata in NavOptions è stato deprecato. B/109806636

24 maggio 2018

Viene rilasciato WorkManager 1.0.0-alpha02.

Responsabile del lavoro

Correzioni di bug

  • È stato corretto un NullPointerException su State.isFinished(). B/79550068

  • È stato risolto un problema che causava la riprogrammazione di Worker il giorno Application.onCreate(). B/79660657

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

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

  • Altri javadoc e correzioni nella documentazione. B/79691663

Modifiche alle API

  • Worker può reagire all'interruzione. È possibile utilizzare Worker.isStopped() per verificare se un Worker è stato interrotto. 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 overload per le API che richiedono una combinazione di durata e TimeUnit. Questa attività è protetta 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 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 artefatto android.arch.paging:rxjava2.

Modifiche alle API

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

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

    • setMainThreadExecutor() è stato rinominato in setNotifyExecutor() (in PagedList.Builder).

  • È stato corretto il problema di privato PagedList.mCallbacks membro.

Correzioni di bug

  • LivePagedListBuilder attiva il caricamento iniziale PagedList 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 implementare DataSource.map, nonché il caricamento di PositionalDataSource disattivato con segnaposto) b/77237534

Room

Correzioni di bug

  • È stato corretto un bug critico nelle implementazioni Rx Single e Maybe della stanza in cui ricicla la query in anticipo, causando problemi se ne aggiungi più di una osservatore alle istanze Single o Maybe restituite. B/76031240

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

Correzioni di bug

  • RoomDatabase.clearAllTables ora tenta di restituire lo spazio al sistema operativo impostando un checkpoint WAL ed eseguendo VACUUMil database.

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

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

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

Correzioni di bug

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

  • La stanza ora assegna i nomi corretti a Dao di classi per evitare conflitti di nomi quando Due o più interfacce Dao sono classi interne nello stesso pacchetto e hanno lo con lo stesso nome. b/73536380

  • I tipi di campo generici nei campi Pojo vengono analizzati correttamente come membri dell'estensione . b/73534868

  • Parametri di ricerca in Dao interfacce ereditati dalla dipendenza gli artefatti vengono ora analizzati correttamente. b/68118746

  • Le 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 e com.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 in AsyncListDiffer
      .
    • getItem(index)/getItemCount() sono stati rimossi a favore del pattern di chiamata di 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() in submitList()
      .
    • 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 utilizzando setJournalMode() in RoomDatabase.Builder. B/67757002

  • Assistenza Guava: ora la stanza supporta Guava di ritorno Optional<T> o ListenableFuture<T> in DAO query. Per usare ListenableFuture<T>, devi importare guava artefatto da Room (android.arch.persistence.room:guava:1.1.0-alpha2).

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

  • I metodi dell'interfaccia con implementazioni predefinite sono ora supportati in @Transaction metodi in DAO classi. Questa operazione è valida sia per Java 8 Kotlin. B/72416735

Correzioni di bug

  • I costruttori con @Relation non causeranno un errore di compilazione se: e un altro costruttore utilizzabile. b/72884434

  • I nomi delle tabelle con caratteri di escape ' nei metodi @Query ora contengono caratteri di escape corretti per il tracker delle invalidazioni. B/72366965

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

  • Il 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
di Gemini Advanced.

Modifiche alle API

  • Gli elementi LifecycleActivity e LifecycleFragment deprecati sono stati rimossi. Utilizza FragmentActivity, AppCompatActivity o assistenza Fragment.
  • @NonNull annotazioni sono state aggiunte a ViewModelProviders e ViewModelStores
  • Il costruttore ViewModelProviders è deprecato. Utilizza direttamente i relativi metodi statici
  • ViewModelProviders.DefaultFactory è stato deprecato. Utilizza ViewModelProvider.AndroidViewModelFactory
  • Il metodo ViewModelProvider.AndroidViewModelFactory.getInstance(Application) statico è stato aggiunto per recuperare un Factory statico adatto per la creazione di istanze ViewModel e AndroidViewModel.

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/71458963
  • fallBackToDestructiveMigrationsFrom: questa nuova API in RoomDatabase.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 paging alpha-4 o superiore e passa 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 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 in ItemKeyedDataSource per rendere la differenza.

  • LivePagedListBuilder e DataSource.Factory sostituiscono LivePagedListProvider. Lo strumento di creazione offre le stesse funzionalità personalizzazione e predefiniti più semplici. Il produttore consente la generazione di DataSource per rimanere indipendenti da LiveData.

  • PagedList.BoundaryCallback aggiunto per il caso d'uso del database + della rete.

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

  • PagedList.getConfig() aggiunto, poi PagedList.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

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 Chiamata onSaveInstanceState (precedente, era appena stata contrassegnata come CREATED senza spedire ON_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).
  • Cicli di vita:

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

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

    • Il 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 trapelare Lifecycle).

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

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

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

Modifiche alla presentazione

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

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

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

Modifiche alle API

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 giorno observer2, riceverà il giorno ON_CREATE e tutti gli altri eventi precedenti al giorno observer2. 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 è: se observer1 viene aggiunto prima di observer2, ON_CREATE viene inviato prima a observer1 e poi a observer2 (lo stesso accade per ON_START e ON_RESUME), ma l'evento ON_PAUSE viene inviato prima a observer2 e solo allora a observer1 (lo stesso per ON_STOP e ON_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 a RoomDatabase.Builder a svuota il database se manca la migrazione. b/63872392

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

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

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

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

  • Le classi LifecycleActivity e LifecycleFragment sono state spostate nell'elemento android.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ò 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 vengono gestiti correttamente. b/62608681

  • Ora le classi DAO astratti possono avere un costruttore che riceve @Database in esecuzione in un'istanza Compute Engine. b/38488747

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

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