Save the date! Android Dev Summit is coming to Sunnyvale, CA on Oct 23-24, 2019.

Catatan Rilis Komponen Arsitektur

Halaman ini memberikan informasi tentang rilis Komponen Arsitektur, termasuk masalah umum, batasan, dan saran umum. Harap tinjau catatan sebelum menggunakan Komponen Arsitektur.

Masukan Anda sangat penting. Harap laporkan masalah dengan Pelacak Masalah, sehingga kami dapat mengintegrasikan masukan Anda ke rilis akhir.

6 Desember 2018

Paging

Paging 2.1.0-rc01 dirilis tanpa perubahan dari 2.1.0-beta01.

Navigation 1.0.0-alpha08 dirilis. Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; silakan lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah ini.

Fitur Baru

  • Label tujuan, saat digunakan dengan metode NavigationUI, sekarang akan otomatis mengganti instance {argName} di android:label dengan argumen yang benar b/80267266
  • Navigation sekarang bergantung pada Dukungan Library 28.0.0 b/120293333

Perubahan yang Dapat Menyebabkan Gangguan

  • OnNavigatedListener telah diganti namanya menjadi OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener sekarang juga meneruskan argumen Bundle aosp/837142
  • Atribut app:clearTask dan app:launchDocument serta metode terkaitnya telah dihapus. Gunakan app:popUpTo dengan root grafik untuk menghapus semua tujuan dari back stack. b/119628354
  • ActivityNavigator.Extras sekarang menggunakan pola Builder dan menambahkan kemampuan untuk mengatur semua penanda Intent.FLAG_ACTIVITY_ aosp/828140
  • NavController.onHandleDeepLink telah diganti namanya menjadi handleDeepLink aosp/836063
  • Beberapa kelas dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti NavOptions, NavInflater, NavDeepLinkBuilder, dan AppBarConfiguration, telah dinyatakan final aosp/835681
  • Metode NavHostFragment.setGraph() yang tidak digunakan lagi telah dihapus aosp/835684
  • Metode NavigationUI.navigateUp(DrawerLayout, NavController) yang tidak digunakan lagi telah dihapus. aosp/835684
  • Pembuatan fragmen telah dipindahkan ke FragmentNavigator, sehingga lebih mudah untuk mendelegasikan pembuatan Fragmen ke FragmentFactory. b/119054429
  • Konstruktor untuk NavGraphNavigator tidak lagi menggunakan Context aosp/835340
  • NavigatorProvider sekarang merupakan kelas, bukan antarmuka. NavigatorProvider yang ditampilkan oleh getNavigatorProvider() belum berubah fungsinya. aosp/830660
  • NavDestination.navigate() telah dihapus. Sebagai gantinya, panggil navigate() pada Navigator. aosp/830663
  • Pemfaktoran ulang Navigator secara signifikan, meniadakan kebutuhan akan OnNavigatorNavigatedListener dan navigate menampilkan NavDestination yang menjadi tujuan navigasi.
  • Instance Navigator tidak dapat lagi mengirim peristiwa pop ke NavController. Pertimbangkan penggunaan OnBackPressedCallback untuk mencegah penekanan tombol kembali dan memanggil navController.popBackStack(). aosp/833716

Perbaikan Bug

  • popUpTo sekarang berfungsi secara konsisten ketika tujuannya adalah elemen <navigation> b/116831650
  • Memperbaiki sejumlah bug yang mengakibatkan IllegalArgumentException saat menggunakan grafik bersarang b/118713731 b/113611083 b/113346925 b/113305559
  • Atribut dataPattern dari tujuan <activity> sekarang akan mengisi argumen dari argumen non-String dengan memanggil toString() b/120161365

Safe Arg

  • Safe Arg mendukung objek Serializable, termasuk nilai Enum. Jenis Enum dapat menetapkan nilai default dengan menggunakan literal enum tanpa nama kelas (misalnya app:defaultValue="READ") b/111316353
  • Safe Arg mendukung array dari semua jenis yang didukung b/111487504
  • Safe Arg sekarang mengabaikan subfolder direktori resource b/117893516
  • Safe Arg menambahkan anotasi @Override jika sesuai b/117145301

5 Desember 2018

WorkManager

WorkManager 1.0.0-alpha12 dirilis. Rilis ini berisi beberapa perubahan API yang dapat menyebabkan gangguan; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah ini. Versi ini kemungkinan akan dirilis sebagai beta pertama kami. alpha12 juga berisi pembaruan dokumentasi yang ekstensif.

Perubahan API

  • Artefak baru, work-rxjava2, memperkenalkan RxWorker. Ini adalah ListenableWorker yang mengharapkan Single<Payload>.
  • Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Ini berarti artefak work-firebase tidak akan diperbarui lagi sementara kita menuju ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang.
  • Menggabungkan Payload menjadi Result. Result sekarang merupakan "kelas terkunci" dengan tiga implementasi konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture sekarang menghasilkan Result, bukan Payload. Worker tidak memiliki metode getter dan setter untuk Data output. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menambahkan Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) dan Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) serta variannya untuk meningkatkan dukungan pemicuan konten URI secara lambat. b/119919774
  • Menambahkan varian WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration). Metode ini memerlukan API 26.
  • Menambahkan metode ekstensi Kotlin Operation.await() dan ListenableFuture.await().
  • Mengganti nama Operation.getException() menjadi Operation.getThrowable(). Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Kelas dan metode ContentUriTriggers yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menghapus metode vararg lainnya di WorkManager, WorkContinuation, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda bisa menggabungkan vararg yang ada dengan Arrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menghapus varian WorkContinuation.combine(OneTimeWorkRequest, *). Varian ini menghadirkan API yang membingungkan; metode combine yang ada lebih mudah dipahami. Ini adalah perubahan yang dapat menyebabkan gangguan.

Perbaikan Bug

  • Implementasi Pre-Marshmallow sekarang lebih dapat diandalkan dalam memulihkan dari proses kerusakan pekerjaan yang sudah dieksekusi.
  • LiveData yang diamati melalui observeForever dilacak melalui WorkManager. Ini adalah backport perbaikan library Room. b/74477406
  • Data.Builder.build() sekarang menampilkan pengecualian jika objek yang diserialisasi melebihi ukuran maksimumnya. Sebelumnya, pengecualian hanya terjadi pada thread latar belakang yang tidak dapat Anda tidak tangani dengan baik.
  • Membedakan lebih jauh tugas yang dihentikan vs dibatalkan; getWorkInfoById() akan menampilkan WorkInfo dengan CANCELLED State selama ListenableWorker.onStopped().
  • Memperlakukan Result null sebagai kegagalan pada ListenableWorker. b/120362353
  • Perbaikan spekulatif untuk Tablet Shield yang menjalankan API 24 yang terkadang menampilkan IllegalArgumentException. b/119484416

Perubahan API yang Dapat Menyebabkan Gangguan

  • Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Ini berarti artefak work-firebase tidak akan diperbarui lagi sementara kita menuju ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang.
  • Menggabungkan Payload menjadi Result. Result sekarang merupakan "kelas terkunci" dengan tiga implementasi konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture sekarang menghasilkan Result, bukan Payload. Worker tidak memiliki metode getter dan setter untuk Data output.
  • Menambahkan metode ekstensi Kotlin Operation.await() dan ListenableFuture.await().
  • Mengganti nama Operation.getException() menjadi Operation.getThrowable().
  • Kelas dan metode ContentUriTriggers yang mereferensikannya tidak lagi tersedia untuk penggunaan publik.
  • Menghapus metode vararg lainnya di WorkManager, WorkContinuation, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda bisa menggabungkan vararg yang ada dengan Arrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode.
  • Menghapus varian WorkContinuation.combine(OneTimeWorkRequest, *). Varian ini menghadirkan API yang membingungkan; metode combine yang ada lebih mudah dipahami.

4 Desember 2018

Room

Room 2.1.0-alpha03 dirilis dengan dukungan coroutine dan beberapa perbaikan bug.

Perubahan API

  • tokenizer FTS di @Fts3 / @Fts4 sekarang menggunakan String, bukan Enum. Ini memungkinkan penggunaan tokenizer kustom di Room. Tokenizer built-in masih didefinisikan dalam FtsOptions sebagai konstanta string. . b/119234881

Fitur Baru

  • Couroutine: Metode DAO sekarang dapat menangguhkan fungsi. Untuk mendukung penangguhan fungsi di Room, artefak baru telah dirilis, room-coroutines. b/69474692
  • Metode DAO yang dianotasi dengan @Insert, @Delete, atau @Update sekarang mendukung ListenableFuture sebagai jenis pengembalian. b/119418331

Perbaikan Bug

  • Memperbaiki bug yang membuat Room keliru mencoba untuk menemukan konstruktor dengan kolom pada properti ignoredColumns @Entity. b/119830714
  • Memperbaiki bug yang membuat Room tidak menandai parameter metode DAO sebagai final dalam implementasi yang dihasilkan. b/118015483
  • Memperbaiki bug yang membuat prosesor Room tidak bekerja saat melaporkan error pada kueri yang memuat simbol khusus. b/119520136
  • Memperbaiki bug yang membuat Room menolak berbagai implementasi Collection lainnya sebagai argumen ekspresi IN. b/119884035
  • Memperbaiki bug yang membuat LiveData yang ditampilkan dari Room akan mendapatkan pembersihan sampah memori saat diamati selamanya sehingga tidak lagi memberikan data baru. b/74477406
  • Memperbarui close lock RoomDatabase untuk mengurangi pertentangan kunci. b/117900450

8 November 2018

WorkManager

WorkManager 1.0.0-alpha11 dirilis. Rilis ini berisi banyak perubahan yang akan menjadi API stabil saat beta. Pada rilis ini, ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis lama; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.

Perubahan API

  • work-runtime-ktx memperkenalkan CoroutineWorker baru.
  • WorkStatus telah diganti namanya menjadi WorkInfo. Semua varian metode getStatus yang terkait telah diganti namanya menjadi varian getWorkInfo yang sesuai. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • ListenableWorker.onStopped() tidak lagi menerima argumen boolean jika WorkRequest dibatalkan. WorkManager tidak lagi membuat perbedaan ini. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Paket androidx.work.test telah diganti namanya menjadi paket androidx.work.testing. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Setter di Constraints tidak lagi menjadi bagian dari API publik. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • WorkerParameters.getTriggeredContentUris() dan WorkerParameters.getTriggeredContentAuthorities() sebelumnya menampilkan array. Sekarang, metode ini menampilkan Koleksi. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • ListenableWorker.onStartWork() diganti namanya menjadi ListenableWorker.startWork(). Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Konstruktor untuk WorkStatus tidak lagi menjadi bagian dari API publik. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Configuration.getMaxJobSchedulerID() dan Configuration.getMinJobSchedulerID() diganti namanya menjadi Configuration.getMinJobSchedulerId() dan Configuration.getMaxJobSchedulerId(). Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menambahkan beberapa anotasi @NonNull ke API publik untuk meningkatkan ergonomi API.
  • Menambahkan API WorkManager.enqueueUniqueWork() untuk mengantre OneTimeWorkRequest unik tanpa perlu membuat WorkContinuation.
  • Semua varian metode enqueue dan cancel pada WorkManager sekarang menampilkan jenis Operation baru. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Semua varian enqueue tidak lagi menerima vararg untuk WorkRequest. Ini adalah perubahan yang dapat menyebabkan gangguan. Sebagai gantinya, gunakan Koleksi. Anda dapat menggunakan Arrays.asList() untuk memodifikasi kode yang ada. Kami melakukan ini untuk mengurangi antarmuka API dan jumlah metode.
  • Mencoba initialize WorkManager lebih dari satu kali per proses sekarang akan mengakibatkan IllegalStateException. Ini adalah perubahan yang dapat menyebabkan gangguan.

Perbaikan Bug

  • WorkRequest.Builder dalam artefak work-runtime-ktx sekarang menggunakan ListenableWorker. Perbaikan b/117666259
  • Memastikan waktu proses berikutnya untuk PeriodicWork berada di masa mendatang. Perbaikan b/118204399
  • Menghapus disk I/O potensial ketika menggunakan WorkManager saat memulai aplikasi. Perbaikan b/117796731
  • Memperbaiki kondisi race di WorkConstraintsTracker. Perbaikan android-workmanager/issues/56

Perubahan API yang Dapat Menyebabkan Gangguan

  • WorkStatus telah diganti namanya menjadi WorkInfo. Semua varian metode getStatus yang terkait telah diganti namanya menjadi varian getWorkInfo yang sesuai.
  • ListenableWorker.onStopped() tidak lagi menerima argumen boolean jika WorkRequest dibatalkan. WorkManager tidak lagi membuat perbedaan ini.
  • Paket androidx.work.test telah diganti namanya menjadi paket androidx.work.testing.
  • Setter di Constraints tidak lagi menjadi bagian dari API publik.
  • WorkerParameters.getTriggeredContentUris() dan WorkerParameters.getTriggeredContentAuthorities() sebelumnya menampilkan array. Sekarang, metode ini menampilkan Koleksi.
  • ListenableWorker.onStartWork() diganti namanya menjadi ListenableWorker.startWork().
  • Konstruktor untuk WorkStatus tidak lagi menjadi bagian dari API publik.
  • Configuration.getMaxJobSchedulerID() dan Configuration.getMinJobSchedulerID() diganti namanya menjadi Configuration.getMinJobSchedulerId() dan Configuration.getMaxJobSchedulerId().
  • Semua varian metode enqueue dan cancel pada WorkManager sekarang mengembalikan jenis Operation baru.
  • Semua varian enqueue tidak lagi menerima vararg untuk WorkRequest.
  • Mencoba initialize WorkManager lebih dari satu kali per proses sekarang akan mengakibatkan IllegalStateException.

1 November 2018

Paging

Paging 2.1.0-beta01 dirilis tanpa perubahan dari 2.1.0-alpha01.

30 Oktober 2018

Room

Room 2.1.0-alpha02 dirilis dengan beberapa perbaikan bug dan fitur baru.

Fitur Baru

  • Menambahkan dukungan untuk mereferensikan @DatabaseView di @Relation. b/117680932

Perbaikan Bug

  • Memperbaiki bug yang membuat Room menjalankan I/O disk di thread utama saat berlangganan dan berhenti langganan jenis pengembalian Rx. b/117201279
  • Memperbaiki bug yang membuat Room gagal menemukan konverter jenis yang sesuai untuk sebuah kolom dalam kelas entity Kotlin. b/111404868
  • Memperbaiki bug yang membuat Room menghasilkan kode yang salah untuk implementasi antarmuka DAO yang berisi metode default Kotlin yang tidak memiliki argumen. b/117527454
  • Mengupdate parser tata bahasa SQLite Room, memperbaiki masalah performa yang menyebabkan waktu pembuatan build yang lama. b/117401230

29 Oktober 2018

Navigation 1.0.0-alpha07 dirilis dengan perbaikan bug dan perubahan API.

Fitur Baru

Perubahan yang Dapat Menyebabkan Gangguan

  • Modul navigation-testing-ktx telah dikemas ke dalam navigation-testing artifact dan tidak akan dipublikasikan lagi.
  • Artefak navigation-testing sekarang memiliki dependensi pada library standar Kotlin. API telah diubah agar lebih konsisten dengan konvensi Kotlin, tetapi Anda dapat terus menggunakannya untuk pengujian aplikasi yang ditulis di Java.
  • Grafik navigasi terdaftar di manifes metadata tidak lagi didukung. b/118355937
  • Tindakan tidak dapat lagi dilampirkan ke tujuan <activity>. aosp/785539

Perbaikan Bug

  • Deep link sekarang mengurai parameter kueri dengan benar. b/110057514
  • Tujuan aktivitas sekarang menerapkan dengan benar semua animasi masuk dan keluar. b/117145284
  • Memperbaiki masalah yang terjadi setelah perubahan konfigurasi saat menggunakan Navigator kustom. b/110763345

Safe Arg

  • Safe Arg sekarang memiliki dependensi tetap pada Android Gradle Plugin 3.2.1. b/113167627
  • Direction sekarang dapat dibuat untuk kelas dalam. b/117407555
  • Memperbaiki masalah terkait pembuatan Direction ke grafik <include>. b/116542123

12 Oktober 2018

Paging

Paging 2.1.0-alpha01 dirilis dengan dua tambahan utama - penurunan halaman, dan library ekstensi KTX untuk setiap artefak - serta beberapa perubahan API dan perbaikan bug lainnya.

Perubahan API

  • Menambahkan PagedList.Config.Builder.setMaxSize() untuk membatasi jumlah item yang dimuat dalam memori.
  • Menambahkan androidx.paging.Config() sebagai alternatif Kotlin untuk PagedList.Config.Builder
  • Menambahkan androidx.paging.PagedList() sebagai alternatif Kotlin untuk PagedList.Builder
  • Menambahkan DataSourceFactory.toLiveData() sebagai alternatif Kotlin untuk LivePagedListBuilder
  • Menambahkan DataSourceFactory.toObservable() dan toFlowable() sebagai alternatif Kotlin untuk RxPagedListBuilder
  • Menambahkan AsyncPagedListDiffer.addPagedListListener() untuk dipantau ketika PagedList ditukar. b/111698609
  • Menambahkan varian PagedListAdapter.onCurrentListChanged() yang meneruskan daftar lama dan baru, varian sebelumnya tidak digunakan lagi.
  • Menambahkan varian PagedListAdapter/AsyncPagedListDiffer.submitList() yang mengambil callback tambahan yang terpicu jika/ketika pagedlist ditampilkan, setelah diffing. Ini memungkinkan Anda untuk menyinkronkan swap PagedList dengan update UI lainnya. b/73781068
  • Menambahkan PagedList.getLoadedCount() untuk memberitahukan banyaknya item dalam memori. Perhatikan bahwa nilai yang ditampilkan selalu sama dengan .size() jika placeholder dinonaktifkan.

Perbaikan Bug

  • Memperbaiki kondisi race saat melakukan diffing jika daftar digunakan kembali b/111591017
  • PagedList.loadAround() sekarang menampilkan IndexOutOfBoundsException saat indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.
  • Memperbaiki kasus di mana ukuran pemuatan awal yang sangat kecil bersama dengan data yang tidak berubah tidak akan menghasilkan pemuatan lebih lanjut b/113122599

11 Oktober 2018

WorkManager

WorkManager 1.0.0-alpha10 dirilis dengan dukungan untuk pekerjaan asinkron yang dikendalikan developer. Ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis ini; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.

WorkManager sedang memasuki fase akhir periode alfa. Kami berharap WorkManager menjadi API stabil dalam versi beta, jadi harap luangkan waktu untuk mengirimkan masukan Anda pada fitur pelacak masalah kami.

Perubahan API

  • Menghapus semua metode dan kelas sebelumnya yang deprecated, terutama konstruktor Worker default. Ini adalah perubahan API yang dapat menyebabkan gangguan.
  • Mengganti nama NonBlockingWorker menjadi ListenableWorker, yang sekarang merupakan kelas publik tak tersembunyi dan siap digunakan.
    • ListenableWorker menyediakan akses ke satu metode abstrak, ListenableFuture<Payload> onStartWork() yang dipanggil pada thread utama. Anda bisa menentukan untuk memulai dan memproses pekerjaan secara asinkron. Setelah selesai, Anda harus memperbarui ListenableFuture dengan benar. Penerapan referensi ListenableFuture disediakan dalam paket Futures di alpha02 (lihat bagian WorkManager di bawah ini).
    • Worker memperluas ListenableWorker dan masih beroperasi seperti sebelumnya, dengan metode Result doWork() abstrak.
    • Mengacak beberapa metode dan anggota dari Worker ke ListenableWorker.
    • Kami akan segera menyediakan implementasi referensi untuk ListenableWorker yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
  • Antarmuka WorkerFactory dan implementasi konkret DefaultWorkerFactory telah digabung menjadi sebuah kelas abstrak yang disebut WorkerFactory. Implementasi ini memastikan perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instance WorkerFactory buatan pengguna. Ini adalah perubahan yang dapat menyebabkan gangguan.
  • Menghapus WorkManager.synchronous() dan WorkContinuation.synchronous() serta semua metode terkait. Menambahkan ListenableFuture<Void> sebagai jenis pengembalian dari banyak metode di API. Ini adalah perubahan API yang dapat menyebabkan gangguan.
    • Sekarang Anda dapat secara sinkron mendapatkan dan mengamati dengan menggunakan ListenableFuture. Misalnya, WorkManager.enqueue() dulu menampilkan void; sekarang menampilkan ListenableFuture<Void>. Anda dapat memanggil ListenableFuture.addListener(Runnable, Executor) atau ListenableFuture.get() untuk menjalankan kode setelah operasi selesai.
    • Perhatikan bahwa ListenableFuture hanya memberitahukan bahwa operasi selesai, namun tidak memberitahukan apakah operasi berhasil atau gagal. Anda masih perlu merangkai metode WorkManager untuk mencari tahu informasi ini.
    • Kami mengabaikan panggilan cancel() pada objek ini, karena membingungkan dan sulit untuk dibahas (Anda membatalkan operasi atau pekerjaan yang ditimbulkan?). Ini berada dalam kontrak Future.
    • Untuk menjaga paritas dengan metode getStatus* sinkron, kami telah menyediakan varian ListenableFuture, dan mengganti nama varian yang sudah ada yang menampilkan LiveData agar secara eksplisit menampilkan "LiveData" sebagai bagian dari namanya (misalnya, getStatusesByIdLiveData(UUID)). Ini adalah perubahan API yang dapat menyebabkan gangguan.

Perbaikan Bug

  • Memperbaiki masalah umum dari alpha09 terkait file androidx-annotations.pro duplikat. Anda dapat menghapus solusi ini dari catatan rilis sebelumnya dengan menghapus exclude 'META-INF/proguard/androidx-annotations.pro' dari file gradle Anda.
  • Menambahkan konfigurasi proguard untuk mempertahankan konstruktor Worker baru. b/116296569
  • Memperbaki potensi NullPointerException dalam kondisi race tempat pekerjaan di-REPLACE (diganti). b/116253486 dan b/116677275
  • WorkContinuation.combine() sekarang menerima satu atau beberapa WorkContinuation, bukan dua atau lebih. b/117266752

Perubahan API yang Dapat Menyebabkan Gangguan

  • Menghapus semua metode dan kelas sebelumnya yang deprecated, terutama konstruktor Worker default.
  • Antarmuka WorkerFactory dan implementasi konkret DefaultWorkerFactory telah digabung menjadi sebuah kelas abstrak yang disebut WorkerFactory.
  • Menghapus WorkManager.synchronous() dan WorkContinuation.synchronous().
  • Metode WorkManager.getStatus*() sekarang menampilkan ListenableFuture. WorkManager.getStatus*LiveData() menampilkan LiveData.

Futures

Futures 1.0.0-alpha02 telah dirilis.

Perubahan API

  • Sekarang developer dapat menggunakan ResolvableFuture dan AbstractResolvableFuture sebagai implementasi ringan dan konkret dari ListenableFuture.

8 Oktober 2018

Room

Room 2.1.0-alpha01 dirilis.

Fitur Baru

  • FTS: Room sekarang mendukung entity dengan tabel FTS3 atau FTS4 pemetaan. Kelas yang dianotasi dengan @Entity sekarang juga dapat dianotasi dengan @Fts3 atau @Fts4 untuk mendeklarasikan kelas dengan tabel penelusuran teks lengkap pemetaan. Opsi FTS untuk penyesuaian lebih lanjut tersedia melalui metode anotasi. b/62356416
  • Tampilan: Room sekarang mendukung deklarasi kelas sebagai kueri tersimpan, yang disebut juga view menggunakan anotasi @DatabaseView. b/67033276
  • Nilai Otomatis: Room sekarang mendukung deklarasi kelas beranotasi AutoValue sebagai entitas dan POJOs. Anotasi Room @PrimaryKey, @ColumnInfo, @Embedded, dan @Relation sekarang dapat dideklarasikan dalam nilai otomatis yang dianotasi metode abstrak kelas. Pastikan anotasi ini juga disertai @CopyAnnotations untuk Room guna memahaminya dengan tepat. b/62408420
  • Dukungan Jenis Pengembalian Rx Tambahan: Metode DAO yang dianotasi dengan @Insert, @Delete, atau @Update sekarang mendukung jenis pengembalian Rx Completable, Single<T>, dan Maybe<T>. b/63317956
  • Jenis Tetap dengan @Relation: Room sebelumnya memerlukan kolom @Relation yang dianotasi agar dapat diatur, tetapi sekarang dapat menjadi parameter konstruktor.
  • enableMultiInstanceInvalidation: merupakan API baru di RoomDatabase.Builder untuk mengaktifkan pembatalan beberapa instance RoomDatabase yang menggunakan file database yang sama. Mekanisme pembatalan multi-instance ini juga berlaku pada banyak proses. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: merupakan API baru di RoomDatabase.Builder untuk membuat ulang database secara otomatis jika downgrade terjadi. b/110416954
  • ignoredColumns: merupakan API baru di anotasi @Entity yang dapat digunakan untuk mencantumkan kolom yang diabaikan menurut nama. Berguna untuk mengabaikan kolom setelan induk pada suatu entity. b/63522075

Perubahan API / Perilaku

  • mCallback dan mDatabase di RoomDatabase sekarang @Deprecated (tidak berlaku lagi) dan akan dihapus pada versi utama Room selanjutnya. b/76109329

Perbaikan Bug

  • Memperbaiki dua masalah yang membuat Room tidak dapat pulih dengan baik dari database yang rusak atau migrasi yang salah selama inisialisasi. b/111504749 dan b/111519144
  • Room sekarang akan menggunakan konstruktor utama Kotlin di kelas data dengan benar, sehingga tidak perlu mendeklarasikan kolom sebagai vars. b/105769985

1 Oktober 2018

Room 2.0.0 dirilis tanpa perubahan dari 2.0.0-rc01. Paging 2.0.0 dirilis dengan perbaikan bug tunggal.

Paging

Perbaikan Bug

  • Memperbaiki masalah yang dapat terjadi pada scroll sangat cepat menggunakan PositionalDataSource dan placeholder b/114635383.

21 September 2018

Lifecycle 2.0.0 dirilis dengan satu perbaikan bug dari 2.0.0-rc01 di ViewModel.

Lifecycle

Perbaikan Bug

  • Memperbaiki aturan proguard ViewModel yang salah menghapus konstruktor b/112230489

20 September 2018

Navigation 1.0.0-alpha06 dirilis dengan perbaikan bug dan perubahan API.

Fitur Baru

Perubahan API

  • Perubahan yang Dapat Menyebabkan Gangguan: Metode navigate() Navigator sekarang menerima parameter Navigator.Extras.
  • Metode getGraph() NavController sekarang NonNull b/112243286

Perbaikan Bug

  • NavigationUI.setupWithNavController() tidak lagi merupakan tampilan bocoran jika digunakan dengan tampilan dari masing-masing tujuan b/111961977
  • Navigator onSaveState() sekarang hanya dipanggil sekali b/112627079

Safe Arg

  • Kelas Direction tujuan navigasi sekarang memperluas kelas Direction induknya jika ada b/79871405
  • Kelas Direction dan Arg sekarang memiliki implementasi toString() yang berguna b/111843389

19 September 2018

WorkManager

WorkManager 1.0.0-alpha09 dirilis dengan perbaikan bug, pembaruan infrastruktur, dan perubahan API.

Masalah Umum

Jika Anda mengalami masalah berikut: "Lebih dari satu file ditemukan dengan lokasi independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:

    android {
        packagingOptions {
            exclude 'META-INF/proguard/androidx-annotations.pro'
        }
    }

Perbaikan Bug

  • Menambahkan perbaikan lain yang diperlukan untuk error "100 pekerjaan". b/115560696
  • Menambahkan beberapa perbaikan untuk error pembatas kunci asing karena kondisi race. b/114705286
  • Mendelegasikan panggilan ConstraintTrackingWorker.onStopped(boolean) ke Worker yang mendasarinya. b/114125093
  • Menerapkan penundaan backoff minimum yang benar untuk Firebase JobDispatcher. b/113304626
  • Meningkatkan jaminan threading internal ke library.
  • Memperbaiki potensi masalah dengan deduping LiveData secara internal.

Perubahan API

  • Sekarang Anda dapat membuat instance Worker Anda sendiri saat waktu proses dengan menentukan WorkerFactory sebagai bagian dari WorkManager.Configuration. Factory fallback adalah DefaultWorkerFactory, yang cocok dengan perilaku versi WorkManager sebelumnya.
    • Konstruktor default untuk Worker dan NonBlockingWorker sekarang ditandai sebagai tidak digunakan lagi. Harap gunakan konstruktor baru (Worker(Context, WorkerParameters)) dan panggil super(Context, WorkerParameters); versi WorkManager yang akan datang akan menghapus konstruktor default.
  • Kami telah mulai menggunakan artefak ListenableFuture baru secara internal (bebas dari dependensi Guava). Kami akan memperkenalkan ListenableFutures ke API dalam rilis mendatang. Perubahan ini akan mendukung diperlihatkannya NonBlockingWorker.
  • Menambahkan kemampuan untuk memicu pekerjaan dibatasi waktu di TestDriver melalui TestDriver.setInitialDelayMet(UUID) dan TestDriver.setPeriodDelayMet(UUID). b/113360060

Perubahan yang Dapat Menyebabkan Gangguan

  • Konstruktor Worker dan NonBlockingWorker default tidak digunakan lagi. Silakan bermigrasi ke konstruktor baru sesegera mungkin. Versi yang akan datang akan menghapus konstruktor default.

27 Agustus 2018

WorkManager

WorkManager 1.0.0-alpha08 dirilis dengan perbaikan bug.

Perbaikan Bug

  • Melabeli dengan jelas komponen WorkManager sebagai tidak berbasis booting langsung, sehingga tidak diaktifkan selama booting langsung. Di masa mendatang, kami akan menyediakan versi WorkManager yang berbasis booting langsung. b/112665532
  • Memperbaiki masalah di mana pekerjaan yang dicoba lagi tidak berjalan. b/112604021
  • Memperbaiki pekerjaan berkala yang tidak berjalan secara berulang (terkait dengan masalah di atas). b/112859683
  • Mengikuti kebijakan backoff saat proses aplikasi sudah berjalan.
  • Pesan pengecualian yang dikoreksi dalam Data untuk menunjukkan batasnya adalah 10 KB.
  • Menurunkan nilai maksimum Configuration.setMaxSchedulerLimit(int) menjadi 50 untuk memperhitungkan latensi dalam penyelesaian proses JobScheduler. b/112817355

16 Agustus 2018

WorkManager

WorkManager 1.0.0-alpha07 dirilis dengan perbaikan bug dan perubahan kecil pada API.

Perbaikan Bug

  • Memperbaiki potensi kueri SQL dengan batas negatif yang dapat mengembalikan jumlah hasil yang tidak terbatas.
  • Pekerjaan yang telah menyelesaikan eksekusi sekarang dapat dengan tepat membatalkan semua salinan dari pekerjaan tersebut yang tertunda di Penjadwal lainnya. Ini menyebabkan batas pekerjaan JobScheduler terlampaui. b/111569265
  • Memperbaiki ConcurrentModificationException di ConstraintTracker. b/112272753
  • Mengubah anotasi jenis pengembalian Data.getBooleanArray(String) dan Data.getIntArray(String) menjadi @Nullable, bukan @NonNull. b/112275229

Perubahan API

  • Worker sekarang memperluas kelas baru, NonBlockingWorker. Ini tidak memengaruhi penggunaan saat ini. Di masa mendatang, NonBlockingWorker akan menjadi entitas yang sepenuhnya didukung untuk solusi rangkaian khusus.
  • Mengubah anotasi jenis pengembalian Data.getBooleanArray(String) dan Data.getIntArray(String) menjadi @Nullable, bukan @NonNull. b/112275229
  • Ekstensi Kotlin: Map.toWorkData() tidak digunakan lagi dan workDataOf(vararg Pair<String, Any?>) level teratas ditambahkan agar lebih konsisten dengan API yang sudah ada.

10 Agustus 2018

Navigation 1.0.0-alpha05 dirilis dengan perbaikan bug.

Perbaikan Bug

  • Memperbaiki bug yang menyebabkan perilaku backstack yang salah. b/111907708
  • Memperbaiki bug di equals() kelas Generated Arg. b/111450897
  • Memperbaiki kegagalan pembuatan di Safe Arg. b/109409713
  • Memperbaiki konversi dari pengenal resource ke nama java b/111602491
  • Memperbaiki pesan error tentang nullability di plugin Safe Arg.
  • Menambahkan anotasi nullability yang hilang.

6 Agustus 2018

Versi AndroidX dari Lifecycle, Room, dan Paging merilis versi 2.0.0-rc01. Semua artefak tidak diubah dari 2.0.0-beta01.

1 Agustus 2018

WorkManager

WorkManager 1.0.0-alpha06 dirilis dengan perbaikan bug.

Perbaikan Bug

  • Mencegah penguncian database saat menjadwalkan pekerjaan. b/111801342
  • Memperbaiki bug yang menyebabkan PeriodicWork tidak berjalan sesuai jadwal saat berada dalam mode Istirahatkan. b/111469837
  • Memperbaiki kondisi race saat melacak batasan yang menyebabkan WorkManager mengalami error. googlecodelabs/android-workmanager/issues/56
  • Membuat WorkRequest unik ketika menggunakan WorkRequest.Builder#build(). b/111408337
  • Mengaktifkan penggunaan RescheduleReceiver hanya ketika ada WorkRequest yang membutuhkannya. b/111765853

24 Juli 2018

WorkManager

WorkManager 1.0.0-alpha05 dirilis dengan perbaikan bug penting dan perubahan logging.

Perubahan API

  • WorkManager.getInstance() sekarang dianotasi dengan @NonNull bukan @Nullable. Sebaliknya, jika singleton tidak diinisialisasi dengan benar dalam kasus inisialisasi manual, metode ini akan melontarkan IllegalStateException. Ini adalah perubahan API yang dapat menyebabkan gangguan pada versi saat ini.
  • Menambahkan API baru, Configuration.Builder.setMinimumLoggingLevel(int), yang dapat mengontrol verbositas WorkManager. Secara default, WorkManager mencatat Log.INFO dan versi di atasnya ke dalam log.
  • Mengubah tanda tangan Data.getString() sehingga tidak lagi mengambil nilai default (secara implisit null ). Ini adalah perubahan API yang dapat menyebabkan gangguan.
  • Menandai beberapa metode yang dibutuhkan hanya untuk penggunaan internal sebagai @hide. Penandaan termasuk konstruktor Constraints, Data.toByteArray(), dan Data.fromByteArray(byte[]). Ini adalah perubahan API yang dapat menyebabkan gangguan.

Perbaikan Bug

  • WorkManager tidak lagi bekerja selama kasus backup otomatis yang diketahui. Ini bisa mengakibatkan error. b/110564377
  • Memperbaiki penjadwalan ganda PeriodicWorkRequest saat menggunakan JobScheduler. b/110798652
  • Memperbaiki masalah PeriodicWorkRequest yang tidak bekerja dengan benar setelah perangkat diistirahatkan. b/111469837
  • Memperbaiki masalah dengan penundaan awal saat menggunakan Firebase JobDispatcher. b/111141023
  • Memperbaiki beberapa potensi kondisi race dan masalah pengaturan waktu.
  • Mengosongkan BroadcastReceiver yang tidak diperlukan lagi dengan tepat.
  • Mengoptimalkan kinerja penjadwalan ulang saat aplikasi memulai ulang setelah ditutup paksa.
  • Mengizinkan TestScheduler.setAllConstraintsMet(UUID) dipanggil sebelum atau setelah mengantre WorkRequest yang ditentukan. b/111238024

Perubahan yang Dapat Menyebabkan Gangguan

  • WorkManager.getInstance() sekarang dianotasi dengan @NonNull bukan @Nullable.
  • Mengubah tanda tangan Data.getString() sehingga tidak lagi mengambil nilai default (secara implisit null ).
  • Menandai beberapa metode yang dibutuhkan hanya untuk penggunaan internal sebagai @hide. Penandaan termasuk konstruktor Constraints, Data.toByteArray(), dan Data.fromByteArray(byte[]).

19 Juli 2018

Navigation 1.0.0-alpha04 dan plugin gradle Safe Arg yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.

Perubahan API / Perilaku

  • NavHostFragment akan selalu mengatur Fragmen saat ini sebagai fragmen navigasi utama, memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778

Safe Arg

  • Perubahan yang Dapat Menyebabkan Gangguan: app:type telah diubah menjadi app:argType untuk menghindari konflik dengan library lain seperti ConstraintLayout 2.0.0-alpha1 b/111110548
  • Pesan errror dari Safe Arg sekarang dapat diklik b/111534438
  • Kelas Arg sekarang menegaskan bahwa atribut NonNull sebenarnya bukan null b/111451769
  • Anotasi NonNull tambahan telah ditambahkan ke NavDirection dan kelas yang dihasilkan Arg b/111455455 b/111455456

Perbaikan Bug

  • Memperbaiki masalah dengan tombol kembali di sistem setelah deep linking ke tujuan fragmen b/111515685

12 Juli 2018

Navigation 1.0.0-alpha03 dan plugin gradle Safe Arg yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.

Perubahan API / Perilaku

  • Metode NavigationUI.setupWithNavController untuk Toolbar telah ditambahkan b/109868820
  • Metode NavigationUI.setupWithNavController untuk CollapsingToolbarLayout telah ditambahkan b/110887183
  • popBackStack () sekarang mengembalikan nilai salah ketika back stack kosong atau ketika ID tujuan yang diberikan tidak ada di back stack b/110893637
  • FragmentNavigator sekarang mengabaikan operasi navigasi setelah FragmentManager menyimpan status, menghindari pengecualian "Tidak dapat melakukan tindakan ini setelah onSaveInstanceState" b/110987825

Safe Arg

  • Perubahan yang Dapat Menyebabkan Gangguan: Karakter non-alfanumerik dalam nama aksi dan argumen akan diganti dengan camel casing di setiap nama metode NavDirections
    • Misalnya DemoController.index akan menjadi setDemoControllerIndex b/79995048
    • Misalnya action_show_settings akan menjadi actionShowSettings b/79642240
  • Perubahan yang Dapat Menyebabkan Gangguan: Argumen sekarang dianggap bukan null secara default. Untuk mengizinkan nilai null pada argumen string dan parcelable, tambahkan app:nullable="true" b/79642307
  • Anda sekarang dapat menggunakan app:type="long" dengan defaultValues ​​dalam format "123L" b/79563966
  • Argumen parcelable sekarang didukung, menggunakan nama kelas yang memenuhi syarat untuk app:type. Satu-satunya nilai default yang didukung adalah "@null" b/79563966
  • Kelas Arg sekarang mengimplementasikan equals() dan hashCode() b/79642246
  • Plugin Safe Arg sekarang dapat diterapkan ke proyek library b/80036553
  • Plugin Safe Arg sekarang dapat diterapkan ke proyek fitur b/110011752

Perbaikan Bug

  • Memperbaiki masalah saat menavigasi selama metode siklus proses Fragmen b/109916080
  • Memperbaiki masalah saat menavigasi melalui grafik bersarang beberapa kali b/110178671
  • Memperbaiki masalah saat menggunakan setPopUpTo dengan tujuan pertama pada grafik b/109909461
  • Memperbaiki masalah di mana semua nilai app:defaultValue diteruskan sebagai String b/110710788
  • aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 sekarang menambahkan aturan penyimpanan untuk setiap atribut android:name dalam file XML Navigation b/79874119
  • Memperbaiki kebocoran memori saat mengganti FragmentNavigator default b/110900142

2 Juli 2018

Versi AndroidX dari Lifecycle, Room, dan Paging merilis versi 2.0.0-beta01.

Lifecycle

Perbaikan Bug

  • Memperbaiki aturan proguard LifecycleObserver untuk menyimpan hanya implementasi, bukan sub-antarmuka b/71389427
  • Memperbaiki aturan proguard ViewModel untuk memungkinkan obfuscation dan penciutan

Room

Perubahan API / Perilaku

  • Menambahkan RoomDatabase.Builder.setQueryExecutor() untuk mengizinkan penyesuaian tempat kueri dijalankan
  • Menambahkan dukungan RxJava2 Observable
  • Implementasi DAO dan Database yang dihasilkan sekarang sudah final

Perbaikan Bug

  • Menentukan nama kelas/kolom di error "tidak dapat menemukan getter untuk kolom" b/73334503
  • Memperbaiki kompatibilitas mundur RoomOpenHelper dengan versi Room yang lebih lama b/110197391

Paging

Perbaikan Bug

  • Memperbaiki konten yang hilang dalam beberapa kasus tambahan (placeholder dinonaktifkan, PositionalDataSource) b/80149146
  • (Sudah dirilis di 1.0.1) Memperbaiki error di mana PagedListAdapter dan AsyncPagedListDiffer gagal untuk memberi sinyal peristiwa pemindahan. b/110711937

26 Juni 2018

Paging

Paging 1.0.1 dirilis dengan perbaikan bug tunggal pada runtime. Kami sangat menyarankan menggunakan 1.0.1 untuk stabilitas. Paging RxJava2 1.0.1 juga dirilis, dan identik dengan 1.0.0-rc1.

Perbaikan Bug

  • Memperbaiki error di mana PagedListAdapter dan AsyncPagedListDiffer gagal untuk memberi sinyal peristiwa pemindahan. b/110711937

WorkManager

WorkManager 1.0.0-alpha04 dirilis.

Perbaikan Bug

  • PeriodicWorkRequest sekarang dijadwal ulang dengan benar saat menggunakan implementasi berbasis AlarmManager.

  • Memperbaiki potensi ANR saat menjadwal ulang semua worker setelah penghentian paksa atau reboot. b/110507716

  • Menambahkan anotasi nullability ke berbagai WorkManager API. b/110344065

  • Mencatat pengecualian yang tidak tertangkap yang terjadi selama eksekusi Worker. b/109900862

  • Memungkinkan migrasi database destruktif jika Anda memutuskan untuk kembali ke versi WorkManager yang lebih lama. b/74633270

  • Memperbaiki error migrasi jika membuat tag implisit duplikat. Ini adalah masalah yang sangat langka yang terjadi hanya jika Anda menggunakan format tag implisit yang sama.

19 Juni 2018

Room

Room 1.1.1 dirilis. Rilis ini identik dengan Room 1.1.1-rc1.

WorkManager

WorkManager 1.0.0-alpha03 dirilis.

Perbaikan Bug

  • Memperbaiki kondisi race pada implementasi berbasis AlarmManager. b/80346526.

  • Memperbaiki pekerjaan duplikat saat menggunakan JobScheduler setelah reboot perangkat.

  • Pekerjaan dengan pemicu Konten URI sekarang bertahan di seluruh reboot. b/80234744

  • Pembaruan dokumentasi. b/109827628, b/109758949, b/80230748

  • Memperbaiki error saat mengantre ulang WorkRequest. b/109572353.

  • Memperbaiki peringatan compiler Kotlin saat menggunakan dependensi work-runtime-ktx.

  • WorkManager saat ini menggunakan Room versi 1.1.1-rc1.

Perubahan API

  • Menambahkan getStatusesSync(), versi sinkron dari WorkContinuation.getStatuses().

  • Worker memiliki kemampuan untuk membedakan antara pembatalan yang dimulai oleh pengguna dan penghentian sementara yang diminta oleh os. Worker.isStopped() mengembalikan nilai true jika segala jenis penghentian telah diminta. Worker.isCancelled() menampilkan nilai true ketika pekerjaan telah secara eksplisit dibatalkan. b/79632247

  • Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Ini diekspos melalui Worker.getNetwork().

  • Menambahkan Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) sehingga Anda dapat memberlakukan jumlah pekerjaan yang dapat dikirim ke JobScheduler atau AlarmManager. Ini membantu mencegah WorkManager mengambil semua slot JobScheduler tersedia.

  • Menambahkan Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) yang membantu menentukan rentang ID pekerjaan JobScheduler yang aman untuk digunakan WorkManager. b/79996760

  • Worker.getRunAttemptCount() menampilkan penghitungan berjalan saat ini untuk Worker tertentu. b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) memungkinkan Anda untuk mengantre PeriodicWorkRequest unik. b/79600647

  • WorkManager.cancelAllWork() membatalkan semua Worker. Library yang bergantung pada WorkManager dapat mengueri kapan metode ini dipanggil terakhir dengan menggunakan WorkManager.getLastCancelAllTimeMillis() untuk pembersihan tambahan status internal.

  • Menambahkan WorkManager.pruneWork() untuk menghapus pekerjaan yang sudah selesai dari database internal. b/79950952, b/109710758

Perubahan Perilaku

  • Menambahkan tag implisit untuk semua WorkRequest, yang merupakan nama kelas yang sepenuhnya memenuhi syarat untuk Worker. Ini memberikan kemampuan untuk menghapus WorkRequest tanpa tag atau ketika id tidak tersedia. b/109572351

Perubahan yang Dapat Menyebabkan Gangguan

  • Mengganti nama Worker.WorkerResult menjadi Worker.Result.

  • Worker.onStopped sekarang memiliki parameter tambahan isCancelled yang disetel ke true ketika Worker telah secara eksplisit dibatalkan.

7 Juni 2018

Navigation 1.0.0-alpha02 dirilis.

Perubahan Perilaku

  • FragmentNavigator sekarang menggunakan setReorderingAllowed(true). b/109826220

  • Navigation sekarang melakukan argumen URLDecode yang diurai dari URL deep link. b/79982454

Perbaikan Bug

  • Memperbaiki IllegalStateException saat memanggil navigasi dari metode siklus proses Fragmen. b/79632233

  • Navigation sekarang bergantung pada Library Dukungan 27.1.1 untuk memperbaiki kedipan saat menggunakan animasi. b/80160903

  • Memperbaiki IllegalArgumentException saat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847

  • Memperbaiki StackOverflowError saat menggunakan NavDeepLinkBuilder. b/109653065

  • Memperbaiki IllegalArgumentException saat menavigasi kembali ke grafik bersarang. b/80453447

  • Memperbaiki masalah Fragmen yang tumpang tindih saat menggunakan launchSingleTop. b/79407969

  • Navigation sekarang membuat back stack sintetis yang benar untuk grafik bersarang. b/79734195

  • NavigationUI sekarang akan menyorot item yang benar ketika grafik bersarang digunakan sebagai MenuItem. b/109675998

Perubahan API

  • Atribut clearTask untuk tindakan dan API terkait pada NavOptions sudah tidak digunakan lagi. b/80338878

  • Atribut launchDocument untuk tindakan dan API terkait pada NavOptions sudah tidak digunakan lagi. b/109806636

24 Mei 2018

WorkManager 1.0.0-alpha02 dirilis.

WorkManager

Perbaikan Bug

  • Memperbaiki NullPointerException di State.isFinished(). b/79550068

  • Memperbaiki masalah yang menyebabkan Worker harus dijadwal ulang di Application.onCreate(). b/79660657

  • Memperbaiki masalah di mana Anda dapat menjadwalkan lebih banyak pekerjaan daripada yang diizinkan oleh OS. b/79497378

  • Memindahkan pembersihan penguncian layar saat aktif yang terkait dengan Worker ke thread latar belakang.

  • Implementasi AlarmManager sekarang membersihkan dengan benar saat semua pekerjaan yang tertunda selesai.

  • Memperbaiki kueri SQL pembersihan yang memengaruhi bahasa non-Inggris. b/80065360

  • Menambahkan dukungan untuk float di Data. b/79443878

  • Data.Builder.putAll() sekarang menampilkan instance Builder. b/79699162

  • Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663

Perubahan API

  • Worker dapat bereaksi saat dihentikan. Worker.isStopped() dapat digunakan untuk memeriksa apakah Worker telah dihentikan. Worker.onStopped() dapat digunakan untuk melakukan operasi pembersihan ringan.

  • API Worker.getTags() mengembalikan satu Set tag yang terkait dengan Worker.

  • Menambahkan kelebihan beban javax.time.Duration untuk API yang menggunakan kombinasi durasi dan TimeUnit. Ini dijaga oleh @RequiresApi(26).

  • Ekstensi WorkManager telah dipindahkan dari paket androidx.work.ktx ke paket androix.work. Ekstensi lama tidak lagi digunakan dan akan dihapus dalam versi yang akan datang.

  • Configuration.withExecutor() tidak digunakan lagi. Gunakan Configuration.setExecutor() sebagai gantinya.

16 Mei 2018

Paging RxJava2 1.0.0-rc1 dan Room 1.1.1-rc1 dirilis. Kami sangat menyarankan menggunakan Room 1.1.1-rc1 sebagai ganti 1.1.0 jika Anda sedang menggunakan migrasi.

Room

Memperbaiki bug di mana Room tidak akan menangani inisialisasi migrasi post dengan benar b/79362399

Paging

Paging rxjava2 berpindah ke kandidat rilis tanpa perubahan dari versi alfa awal.

8 Mei 2018

Paging 1.0, Navigation, dan WorkManager Alfa, Room 1.1, AndroidX

Paging 1.0.0 dan Room 1.1.0 dirilis, bersama dengan versi alfa untuk dua Komponen Arsitektur baru - Navigation dan WorkManager.

Tidak ada perubahan pada Paging dan Room sejak kandidat rilis terbaru.

Library Baru: Navigation

Navigation menyediakan kerangka kerja untuk membuat navigasi dalam aplikasi. Rilis awal ini adalah 1.0.0-alpha01.

Library Baru: WorkManager

WorkManager menyederhanakan penjadwalan dan pelaksanaan pekerjaan latar belakang yang terjamin dan berbasis pembatas. Rilis awal ini adalah 1.0.0-alpha01.

AndroidX

Komponen arsitektur berpindah menjadi bagian dari AndroidX, termasuk nama paket yang diupdate, nama artefak, dan dependensi pada library AndroidX lainnya. Semua ini dirilis pada versi 2.0.0-alpha1 untuk digunakan bersama dengan library AndroidX lainnya.

Ekstensi Kotlin

ViewModel, ReactiveStreams, dan Sqlite (sebelumnya komponen 'Database' Room) semua memiliki library ekstensi Kotlin yang ditambahkan sebagai bagian dari rilis alfa AndroidX. Selain itu, Navigation dan WorkManager menyertakan modul -ktx. Masing-masing modul ekstensi ini dapat ditemukan dalam menambahkan komponen.

2 Mei 2018

  • Kandidat Rilis Room 1.1.0
  • Room 1.1.0-rc1 dirilis.

Perbaikan Bug

  • Room sekarang kompatibel dengan Kotlin 1.2.40. b/78328708

19 April 2018

Kandidat Rilis Paging

Paging 1.0.0-rc1 dan Room 1.1.0-beta3 dirilis.

Paging

Kami tidak memiliki masalah umum atau fitur baru lagi yang dijadwalkan untuk rilis Paging 1.0.0. Harap update proyek Anda untuk menggunakan 1.0.0-rc1 dan bantu kami untuk melakukan uji tanding sehingga kami dapat merilis 1.0.0 yang solid.

Tidak ada perubahan dalam rilis ini, sama dengan 1.0.0-beta1.

Room

Perbaikan Bug

  • Memperbaiki error kompilasi saat POJO Kotlin mereferensi entitas relasi yang didefinisikan di Java b/78199923

5 April 2018

Room 1.1.0-beta2, Paging 1.0.0-beta1, dan Paging RxJava 1.0.0-alpha1 dirilis.

Paging akan berada dalam vesi beta untuk waktu yang singkat sebelum menjadi kandidat rilis. Kami tidak merencanakan perubahan API lebih lanjut untuk Paging 1.0, dan batasan untuk setiap perubahan API sangat tinggi.

Dukungan Alfa RxJava2 untuk Paging dirilis sebagai modul opsional terpisah (android.arch.paging:rxjava2:1.0.0-alpha1) dan akan diberi versi sementara secara terpisah sampai stabil.

Library baru ini menyediakan alternatif RxJava2 untuk LivePagedListBuilder, yang mampu membangun sistem Observable dan Flowable, mengambil Scheduler sebagai pengganti Executor:

Observable<PagedList<Item>> pagedItems =
        RxPagedListBuilder(myDataSource, /* page size */ 50)
                .setFetchScheduler(myNetworkScheduler)
                .buildObservable();

Paging

Fitur Baru

  • RxPagedListBuilder ditambahkan melalui artefak android.arch.paging:rxjava2.

Perubahan API

  • Perubahan API untuk memperjelas peran pelaksana dalam pembuat:

    • Mengganti nama setBackgroundThreadExecutor() menjadi setFetchExecutor() (dalam PagedList.Builder dan LivePagedListBuilder)

    • Mengganti nama setMainThreadExecutor() menjadi setNotifyExecutor() (dalam PagedList.Builder).

  • Memperbaiki anggota PagedList.mCallbacks menjadi pribadi.

Perbaikan Bug

  • LivePagedListBuilder memicu pemuatan PagedList awal pada pelaksana yang ditentukan, sebagai ganti pool thread IO Komponen Arch.

  • Memperbaiki perilaku pembatalan pada wrapper DataSource internal (yang digunakan untuk mengimplementasikan DataSource.map, serta pemuatan PositionalDataSource yang dinonaktifkan placeholder) b/77237534

Room

Perbaikan Bug

  • Memperbaiki bug penting di Rx Single Room dan implementasi Maybe di mana ini akan mendaur ulang kueri lebih dini, yang menyebabkan masalah jika Anda menambahkan lebih dari 1 pengamat ke instance Single atau Maybe yang dikembalikan. b/76031240

  • RoomDatabase.clearAllTables tidak akan melakukan VACUUM database jika dipanggil di dalam transaksi. b/77235565

21 Maret 2018

Room 1.1.0-beta1, Paging 1.0.0-alpha7, dan Lifecycle 1.1.1 dirilis.

Room

Perubahan API

Perbaikan Bug

  • RoomDatabase.clearAllTables sekarang mencoba mengembalikan ruang kembali ke sistem operasi dengan menyetel checkpoint WAL dan melakukan VACUUM database.

  • @RawQuery sekarang menerima Pojo untuk properti observedEntities selama Pojo merujuk ke satu atau lebih entity melalui kolom Embedded atau Relation. b/74041772

  • Paging: Implementasi DataSource Room sekarang menangani dependensi multi-tabel dengan benar (seperti hubungan dan gabungan). Sebelumnya penangangan akan untuk memicu hasil baru, atau gagal mengompilasi. b/74128314

Lifecycle

Hanya satu perubahan kecil: android.arch.core.util.Function dipindahkan dari arch:runtime ke arch:common. Pemindahan ini memungkinkan android.arch.core.util.Function untuk digunakan tanpa dependensi runtime, misalnya dalam paging:common di bawah ini.

lifecycle:common adalah dependensi lifecycle:runtime, sehingga perubahan ini tidak memengaruhi lifecycle:runtime secara langsung, hanya modul yang bergantung langsung pada lifecycle:common, seperti Paging.

Paging

Paging 1.0.0-alpha7 dirilis bersamaan dengan Lifecycle 1.1.1. Karena Paging alpha7 bergantung pada pemindahan kelas Function sebagaimana disebutkan di atas, Anda harus mengupdate dependensi lifecycle:runtime Anda ke android.arch.lifecycle:runtime:1.1.1.

Paging alpha7 direncanakan menjadi rilis final sebelum Paging mencapai beta.

Perubahan API

  • Objek DataSource.LoadParams kini memiliki konstruktor publik dan objek DataSource.LoadCallback sekarang abstrak. Ini memungkinkan untuk menggabungkan DataSource atau langsung menguji DataSource dengan callback palsu. b/72600421
  • Pemetaan untuk DataSource dan DataSource.Factory
    • map(Function<IN,OUT>) memungkinkan Anda untuk mentransformasi, menggabungkan, atau mendekorasi hasil yang dimuat oleh DataSource.
    • mapByPage(<List<IN>,List<OUT>>) memungkinkan hal yang sama untuk pemrosesan batch (misalnya, jika item yang dimuat dari SQL perlu mengueri tambahan database terpisah, yang dapat dilakukan secara batch.)
  • PagedList#getDataSource() ditambahkan sebagai metode kenyamanan b/72611341
  • Semua kelas yang tidak lagi digunakan telah dihapus dari API, termasuk sisa paket recyclerview.extensions dan LivePagedListProvider.
  • DataSource.Factory diubah dari antarmuka menjadi kelas abstrak guna memungkinkan fungsi pemetaan.

Perbaikan Bug

  • Mengubah Pembuat menjadi final. b/70848565
  • Implementasi DataSource Room sekarang tetap untuk menangani kueri multi-tabel - perbaikan ini disertakan pada Room 1.1.0-beta1, lihat di atas.
  • Memperbaiki bug di mana BoundaryCallback.onItemAtEndLoaded tidak akan dipanggil untuk PositionalDataSource jika placeholder diaktifkan dan ukuran total merupakan kelipatan yang tepat dari ukuran halaman.

2 Maret 2018

Room 1.1.0-alpha3 dirilis. Ini adalah rilis alfa terakhir yang direncanakan untuk Room 1.1.0.

Perubahan API

  • Metode addObserver dan removeObserver InvalidationTracker sekarang sinkron dan perlu dipanggil pada thread non-ui. Perubahan ini mencegah beberapa kondisi race saat mengamati tabel.

  • Ada metode clearAllTables() baru pada kelas RoomDatabase yang akan memotong semua isi tabel. b/63807999

  • SupportSQLiteQuery sekarang memiliki metode getArgCount() yang mengembalikan jumlah parameter kueri. b/67038952

Perbaikan Bug

  • @RawQuery sekarang didukung dengan benar untuk kueri Paging. b/72600425

  • Room sekarang memberi nama kelas Dao yang dihasilkan dengan benar untuk menghindari konflik saat 2 atau lebih antarmuka Dao adalah kelas dalam di paket yang sama dan memiliki nama yang sama. b/73536380

  • Jenis kolom umum di Pojo telah diurai dengan benar sebagai anggota kelas yang diperluas. b/73534868

  • Parameter kueri dalam antarmuka Dao yang diwarisi dari artefak dependensi sekarang diurai dengan benar. b/68118746

  • Kueri yang dihasilkan untuk @Relation sekarang mengawali nama kolom dengan benar. b/70925483

27 Februari 2018

Paging 1.0.0-alpha6 dirilis bersamaan dengan rilis Library Dukungan 27.1.0. ListAdapter dan beberapa kelas terkait telah dipindahkan dari Library Paging secara langsung ke Recyclerview, bersama beberapa nama untuk membuat fungsi kelas tertentu lebih jelas. Rilis alfa paging ini kemungkinan besar merupakan rilis terakhir yang memiliki perubahan API signifikan yang dapat mengganggu.

Perubahan API

  • Kelas yang dipindahkan ke recyclerview-v7:
    • ListAdapter
  • Kelas yang diganti namanya, dan yang dipindahkan ke recyclerview-v7:
    • ListAdapterHelper -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> DiffUtil.ItemCallback
  • Kelas yang diganti namanya di dalam runtime-paging:
    • PagedListAdapterHelper -> AsyncPagedListDiffer

Kelas-kelas yang dipindahkan berguna bersama RecyclerView, independen dari Library Paging. Ini berarti mereka dapat digunakan tanpa bergantung pada rilis alfa Paging, tetapi juga berarti aplikasi yang menggunakan Paging harus di-upgrade ke Alfa 6 dan Library Dukungan 27.1.0 secara bersamaan.

** Panduan migrasi untuk Paging Alpha6: **

  • Perbarui dependensi paging dan recyclerview ke android.arch.paging:runtime:1.0.0-alpha6 dan com.android.support:recyclerview-v7:27.1.0
    • ini harus dilakukan secara bersamaan, selagi ListAdapter dipindahkan dari Paging ke RecyclerView
  • Perbarui semua referensi ListAdapterHelper ke AsyncListDiffer.
    • getItem(index) / getItemCount() telah dihapus, mendukung pola pemanggilan getCurrentList().getItem(index) dan getCurrentList().size(), yang lebih eksplisit.
  • Perbarui semua referensi ListAdapterConfig ke AsyncDifferConfig.
  • Perbarui semua referensi DiffCallback ke DiffUtil..IttemCallback
  • Perbarui semua referensi PagedListAdapterHelper ke AsyncPagedListDiffer.
  • Perbarui referensi setList() ke submitList()
    • diganti namanya untuk memperjelas sifat asinkron diffing daftar

Perbaikan Bug

  • Memperbaiki penerusan posisi awal yang salah ke pemuatan awal saat placeholder dinonaktifkan. b/73513780

15 Februari 2018

Room 1.1.0-alpha2 dirilis.

Fitur Baru

  • Room sekarang mendukung pembukaan database dalam mode penulisan sebelum logging. Dalam mode ini, tulisan Anda tidak akan lagi memblokir kueri baca. Meskipun menghabiskan lebih banyak memori (karena banyaknya koneksi), mode ini biasanya lebih cepat. Secara default, Room akan menggunakan WAL jika perangkatnya menjalankan API 16 atau yang lebih tinggi dan bukan perangkat memori rendah. Anda dapat mengontrol perilaku ini menggunakan metode setJournalMode() pada RoomDatabase.Builder. b/67757002

  • Dukungan Guava: Room sekarang mendukung ditampilkannya Guava Optional<T> atau ListenableFuture<T> di kueri DAO. Untuk menggunakan ListenableFuture<T>, Anda perlu mengimpor artefak guava dari Room (android.arch.persistence.room:guava:1.1.0-alpha2).

  • Room sekarang mendukung ditampilkannya java.util.Optional<T> dari kueri DAO.

  • Metode antarmuka dengan implementasi default sekarang didukung di metode @Transaction di kelas DAO. Ini berfungsi untuk Java 8 dan Kotlin. b/72416735

Perbaikan Bug

  • Konstruktor dengan @Relation tidak akan menyebabkan error kompilasi jika ada konstruktor lain yang dapat digunakan. b/72884434

  • Nama tabel yang diawali dengan ' dalam metode @Query sekarang diawali dengan benar untuk pelacak pembatalan. b/72366965

  • Room sekarang menggunakan anotasi @Metadata Kotlin untuk membaca struktur kelas selama pemrosesan anotasi. Ini berarti, meski pojo diwariskan dari dependensi, nama parameter konstruktornya dapat dibaca dengan benar. b/67181813

  • Masalah saat menemukan jalur migrasi downgrade sudah diperbaiki. b/72153525

  • Jenis kolom non-default sekarang ditangani dengan benar ketika bermigrasi dari database yang ada ke Room. b/71953987

  • Room sekarang menangani kolom boolean? yang bertahan di kelas Kotlin dengan benar. b/72786402

22 Januari 2018

Lifecycle 1.1.0, Room 1.1.0-alpha1 dan Paging 1.0.0-alpha5 dirilis.

Lifecycle 1.1.0

Perubahan Paket

Dependensi baru yang jauh lebih kecil sekarang tersedia:

  • android.arch.lifecycle:livedata:1.1.0
  • android.arch.lifecycle:viewmodel:1.1.0

Perubahan API

  • LifecycleActivity dan LifecycleFragment yang sudah tidak digunakan lagi telah dihapus - harap gunakan FragmentActivity, AppCompatActivity, atau Fragment dukungan.
  • Anotasi @NonNull telah ditambahkan ke ViewModelProviders dan ViewModelStores
  • Konstruktor ViewModelProviders telah ditinggalkan - harap gunakan metode statisnya secara langsung
  • ViewModelProviders.DefaultFactory tidak digunakan lagi - harap gunakan ViewModelProvider..AndroidViewModelFactory
  • Metode ViewModelProvider.AndroidViewModelFactory.getInstance(Application) statis telah ditambahkan untuk mengambil Factory statis yang cocok untuk membuat instance ViewModel dan AndroidViewModel.

Room 1.1.0-alpha1

Fitur Baru

  • RawQuery: API baru ini memungkinkan metode @Dao untuk menerima SQL sebagai parameter kueri b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: API baru di RoomDatabase..Builder ini memungkinkan kontrol yang lebih halus atas migrasi destruktif versi skema awal yang diizinkan (dibandingkan dengan fallbackToDestructiveMigration b/64989640
  • Room sekarang hanya mendukung API Paging yang lebih baru (alpha-4+), yang melepaskan dukungan untuk LivePagedListProvider yang tidak digunakan lagi. Untuk menggunakan alfa Room yang baru, Anda harus menggunakan paging alpha-4 atau lebih tinggi dan beralih dari LivePagedListProvider ke LivePagedListBuilder jika Anda belum melakukannya.

Perbaikan Bug

  • Peningkatan dukungan untuk jenis Kotlin Kapt. b/69164099
  • Urutan kolom tidak membatalkan skema lagi. b/64290754

Paging 1.0.0-alpha5

Perbaikan Bug

  • Perbaikan pemuatan halaman saat placeholder dinonaktifkan b/70573345
  • Logging tambahan untuk melacak bug IllegalArgumentException b/70360195 (dan perbaikan sisi Room spekulatif)
  • Perbaikan kode contoh Javadoc b/70411933, b/71467637

11 Desember 2017

Paging alpha4-1 dirilis. Ini adalah rilis perbaikan kecil pada bug untuk Paging alfa 4.

Perbaikan Bug

7 Desember 2017

Paging alpha4 dirilis, dengan perubahan dan penambahan yang signifikan, sebagian besar menargetkan jaringan, dan kasus penggunaan jaringan + database.

Perubahan API

  • DataSource sekarang adalah API asinkron, untuk lebih memudahkan paging langsung dari jaringan:

    • Titik masuk tunggal untuk ukuran dan data awal
    • Mendukung percobaan ulang jaringan dengan menahan callback, dan mengirimnya nanti
    • Callback threadsafe memungkinkan pemuatan asinkron untuk membuat PagedList yang didukung jaringan tunggal pada thread UI.
    • Perilaku error di sekitar parameter pemuatan awal lebih jelas
  • TiledDataSource berganti nama menjadi PositionalDataSource untuk mencerminkan pengindeksan berbasis posisi dan fakta bahwa susunan pengindeksan tidak berubah saat placeholder dinonaktifkan.

  • PageKeyedDataSource ditambahkan untuk mendukung token berikutnya/sebelumnya yang disematkan pada pemuatan halaman jaringan. KeyedDataSource berganti nama menjadi ItemKeyedDataSource untuk membuat perbedaan yang jelas.

  • LivePagedListBuilder dan DataSource.Factory menggantikan LivePagedListProvider. Pembuat menyediakan kemampuan yang sama dengan lebih banyak penyesuaian dan default yang lebih sederhana. Factory mengizinkan kode pembuatan DataSource untuk tetap independen dari LiveData.

  • PagedList.BoundaryCallback ditambahkan untuk kasus penggunaan database + jaringan.

  • Konstruktor PagedList.Builder menerima DataSource + PagedList..Config, sekarang lebih mirip dengan LivePagedListBuilder, dan memungkinkan operator diamond pada bahasa Java atau jenis yang ditentukan di Kotlin.

  • PagedList.getConfig() ditambahkan, dan PagedList..Config sekarang memiliki properti anggota publik.

  • KeyedDataSource.loadBefore() tidak lagi mengharapkan hasil terbalik.

  • PagedListAdapter.onCurrentListChanged() ditambahkan untuk mendengarkan update di mana PagedList sedang ditampilkan.

Perbaikan Bug

  • Memperbaiki IndexOutOfBoundsException di PagedListAdapter(Helper) b/67883658

1.0.0 - 6 November 2017

Semua komponen utama (kecuali Paging) sekarang 1.0.0. Ini adalah rilis yang sama persis seperti rc1 kecuali satu perubahan pada library reactivestreams.

Perbaikan Bug

Kandidat Rilis - 18 Oktober 2017

Semua artefak utama (kecuali Paging) sekarang menjadi 1.0.0-rc1.

Tidak ada masalah umum atau fitur baru yang dijadwalkan untuk rilis 1.0.0. Harap upgrade proyek Anda untuk menggunakan 1.0.0-rc1 dan bantu kami untuk melakukan uji tanding agar kami dapat merilis 1.0.0 yang solid.

Perubahan Perilaku

  • Dengan rilis ini, Lifecycle.Event#ON_STOP sekarang dikirim ketika onSaveInstanceState dipanggil (sebelumnya hanya ditandai sebagai CREATED tanpa mengirim ON_STOP). Anda dapat membaca lebih lanjut tentang hal ini di dokumentasi Lifecycle.

Perbaikan Bug

  • Room:

    • Room sekarang tergantung pada artefak xerial terbaru yang memperbaiki masalah OutOfMemory selama kompilasi. b/62473121
    • Metode Query sekarang dapat dianotasi dengan @Transaction. Lihat dokumen referensi di @Transaction untuk informasi selengkapnya. b/65112315
    • Kelas StringUtil di Room dihapus dari API publik (tidak pernah dimaksudkan sebagai API publik).
  • Lifecycle:

    • LiveData berfungsi dengan baik saat Aktivitas hanya sebagian dicakup di API <24. b/65665621

    • Metode OnLifecycleEvent di kelas induk sekarang dipanggil dengan benar atau peringatan dicetak selama kompilasi jika tidak memungkinkan. b/63474615

    • Lifecycle sekarang mengembalikan WeakReference ke LifecycleOwner untuk menghindari bocornya LifecycleOwner jika Lifecycle disimpan lebih lama dari biasanya di memori (ini hanya tindakan pencegahan, Anda harus tetap berhati-hati agar tidak membocorkan Lifecycle).

9 Oktober 2017

Paging alpha-3 dirilis; yang membuatnya kompatibel dengan rilis beta 2 dari Lifecycle dan Room.

Perbaikan Bug

  • Peningkatan Dokumentasi Paging.

5 Oktober 2017

Semua artefak utama (kecuali Paging) sekarang beta 2. Tidak ada versi baru Paging dalam rilis ini.

Perbaikan Bug

  • Lifecycle:

    • LiveDataReactiveStreams sekarang berhenti berlangganan dengan benar dari penerbit sumber saat LiveData tidak aktif. b/62609183
    • Peristiwa siklus proses disebarkan dengan benar ke kelas induk jika kelas induk berasal dari modul lain. b/63474615
    • LiveData menangani pengamat dengan benar saat mereka berhenti berlangganan selama pembuatan langganan. b/66337741
    • FullLifecycleObserver untuk artefak Bahasa Java 8 sekarang tersedia dalam hierarki dependensi. b/66525578

    • Untuk proguard, harap tambahkan baris berikut ke file proguard Anda. (Baris ini tidak diperlukan saat 1.0.0 dirilis)

      • -keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
  • Room:

    • Room sekarang mencetak error pada saat kompilasi ketika Pojo yang dikembalikan dalam metode @Query memiliki kolom @NonNull yang tidak cocok dengan kolom apa pun dalam respons kueri. Jika kolomnya @Nullable, Room hanya mencetak peringatan. b/67115337
    • Room sekarang memvalidasi indeks dalam versi OS yang lebih baru. b/63132683
    • Room akan memilih konstruktor tanpa-arg secara default jika ada beberapa konstruktor pencocokan di Pojo. b/67353427
    • Kunci utama kolom tunggal dapat menjadi Nullable jika kuncinya adalah Integer atau Long. b/67086876
    • Pelacak pembatalan menangani entri ulang dalam mode uji coba dengan benar. b/65471397
    • Room sekarang memeriksa karakter yang tidak valid di kolom dan nama tabel pada waktu kompilasi (karakter tidak valid: `, "). b/64749111

21 September 2017

Dengan rilis ini, semua modul Komponen Arsitektur mencapai setidaknya beta 1 (kecuali Library Paging baru yang yaitu alpha 2).

Kami tidak merencanakan perubahan API lagi. Perubahan yang tidak terencana mungkin terjadi, tetapi batasan untuk mengubah API apa pun sebelum 1.0.0 stabil sangat tinggi dan sangat kecil kemungkinan untuk terjadi.

  • LifecycleActivity & LifecycleFragment akan dihapus sebelum 1.0.0 stabil. Keduanya tidak diperlukan saat menggunakan Library Dukungan 26.1.0 atau lebih baru.

Berbeda dengan fase alfa, fase beta dijadwalkan menjadi durasi yang sangat singkat.

Perubahan Versi

  • Ekstensi Lifecycle dan Room sekarang menjadi beta 1
  • Paging sekarang adalah alpha 2
  • Tidak ada perubahan dalam Lifecycle (runtime, umum) dan Arch Core (umum). Kedua artefak ini adalah versi 1.0.0 sejak 13 September.

Artefak Baru

  • Lifecycle sekarang memiliki artefak baru yang disebut common-java8. Artefak ini berisi antarmuka baru yang disebut DefaultLifecycleObserver; yang memiliki implementasi default untuk semua metode Lifecycle. Jika Anda menggunakan bahasa Java 8, Anda harus lebih memilih artefak ini daripada anotasi.

    • Karena bug di beta1, Anda perlu menambahkan dependensi eksplisit pada modul android.arch.lifecycle:common:1.0.1 untuk menggunakan artefak common-java8 baru. Masalah ini akan diperbaiki dalam beta2.

Perubahan Paket

  • android.arch.persistence.room.db telah dipindahkan ke android.arch.persistence.db
  • android.arch.persistence.room.db-impl telah dipindahkan dan diganti namanya menjadi android.arch.persistence.db-framework

Kedua artefak ini sudah menjadi dependensi di Room jadi kecuali Anda langsung menggunakannya, Anda tidak perlu mengubah apa pun di file build Anda.

Perubahan API

  • Room:

    • Anotasi @ColumnInfo sekarang mendukung penyetelan pemeriksaan pada kolom. b/62007004
    • Kolom transient sekarang diabaikan secara default kecuali jika mereka dianotasi dengan @ColumnInfo, @Embedded, atau @Relation. b/62600692
    • Kunci Utama harus dianotasi dengan @NonNull kecuali jika dibuat secara otomatis. b/64292391
      • Perubahan ini mungkin memerlukan migrasi skema. Kami mohon maaf atas ketidaknyamanan ini.
    • Menambahkan anotasi kenyamanan baru (@Transaction) yang menggantikan metode DAO dan menjalankannya di dalam transaksi.
  • Database SQLite Dukungan:

  • Paging:

    • Peningkatan dokumentasi Paging dengan lebih banyak contoh dan anotasi thread.

Perbaikan Bug

  • Room:
    • String multi-baris Kotlin dalam metode @Query ditangani dengan benar. b/65809374
  • Paging:
    • Artefak Paging tidak lagi tergantung pada junit. b/65690261

1.0.0 Alfa 9-1 - 13 September 2017

Ini adalah rilis besar di mana artefak siklus proses inti (runtime, umum) dan arch core (umum) mencapai versi stabil 1.0.0.

Seiring dengan perubahan ini, Library Dukungan 26.1.0 sekarang tergantung pada library-library ini. AppCompatActivity dan Fragmen Dukungan sekarang mengimplementasikan antarmuka LifecycleOwner.

Rilis ini juga tergantung pada Library Dukungan 26.1.0 untuk mengambil keuntungan dari integrasi baru.

Library Baru: Paging

Rilis ini juga mencakup library baru bernama Paging, yang memungkinkan pemuatan kumpulan data besar dengan mudah ke RecyclerView dalam beberapa potongan bila diperlukan. Paging dirilis sebagai alpha1 dan akan memiliki siklus rilisnya sendiri.

Perubahan API

Perbaikan Bug

  • Kelas yang dihasilkan sekarang dianotasi dengan @Generated jika aplikasi memiliki anotasi di classpath. b/35754819

  • Memperbaiki bug perbandingan pengamat MediatorLiveData. b/64413274

  • Kueri WITH SQLite sekarang didukung dengan [LiveData]. [ref-LiveData]b/62510164

  • Memperbaiki bug di mana InvalidationTracker tidak akan mengirim daftar yang benar jika lebih dari 1 tabel diamati. b/65099281

  • Memperbaiki bug di mana Room akan menghasilkan file berbeda di Windows. b/64470691

  • LifecycleObserver dalam paket root sekarang didukung. b/62310817

1.0.0 Alfa 9 - 16 Agustus 2017

Perbaikan bug

1.0.0 Alfa 8 - 1 Agustus 2017

Perubahan Perilaku

  • Pembatas NOT NULL ditambahkan untuk kolom jenis primitif atau kolom yang dianotasi dengan NonNull. Ini mengubah struktur tabel Anda, jadi jika Anda sudah menggunakan Komponen Arsitektur alfa 7 atau yang lebih lama, Anda perlu menerapkan migrasi jika ingin menyimpan datanya, atau menggunakan metode fallbackToDestructiveMigration() pada builder. b/62007004

Perubahan API

1.0.0 Alfa 7 - 26 Juli 2017

Perbaikan bug

1.0.0 Alfa 6 - 25 Juli 2017

Perubahan perilaku

  • Urutan panggilan LifecycleObserver telah diubah. Sebelumnya pengamat selalu dipanggil dalam urutan penambahan mereka: jika observer1 ditambahkan sebelum observer2, maka akan menerima ON_CREATE dan semua peristiwa lainnya sebelum observer2. Ini tidak lagi benar untuk peristiwa-peristiwa penghancuran, karena bagi peristiwa-peristiwa tersebut, para pengamat dipanggil dalam urutan terbalik. Jadi perilaku saat ini adalah: jika observer1 ditambahkan sebelum observer2, maka ON_CREATE dikirim terlebih dahulu ke observer1, kemudian ke observer2 (sama halnya untuk ON_START dan ON_RESUME), tetapi peristiwa ON_PAUSE dikirim terlebih dulu ke observer2 dan kemudian ke observer1 (sama halnya untuk ON_STOP dan ON_DESTROY).

  • Room melontarkan pengecualian jika migrasi hilang. Sebelumnya Room hanya akan menghapus database, tetapi sekarang Room akan error. Developer dapat ikut serta dalam perilaku pembersihan dengan memanggil API pembuat. b/63872392

Perubahan API

  • Menambahkan metode fallbackToDestructiveMigration() ke RoomDatabase..Builder untuk menghapus database jika migrasi hilang. b/63872392

  • Komponen arsitektur sekarang bergantung pada library dukungan 26.0.0

Perbaikan bug

  • Memperbaiki penanganan @Relation yang disarangkan ke @Embedded. b/63736065

  • Memperbaiki migrasi pengujian untuk tabel dengan kunci primer yang mengalami peningkatan otomatis. b/63393618

  • Sekarang @Queries yang menjalankan kueri DELETE atau UPDATE menerima argumen dengan benar. b/63872538

  • Sekarang ViewModels dipertahankan, ketika fragmen pemilik ada di backstack dan perubahan konfigurasi terjadi dua kali. b/38445801

1.0.0 Alfa 5 - 18 Juli 2017

Perubahan API

Anda harus bergantung pada artefak android.arch.persistence.room:rxjava2 untuk menambahkan dukungan RxJava ke Room.

Perbaikan bug

  • Memperbaiki kueri @Delete tanpa parameter apa pun. b/63608092

  • Memperbaiki pemeriksaan jenis Room untuk getter dan setter. b/63733651

1.0.0 Alfa 4 - 11 Juli 2017

Perubahan API

  • Menambahkan metode kenyamanan baru (runInTransaction()) ke RoomDatabase.

  • Metode @Insert, @Delete, dan @Update sekarang dapat mengetahui parameter dari jenis entity yang berbeda. b/62682405

Perbaikan Bug

  • Memperbaiki penanganan byte[] dalam metode @Dao. b/62460045

  • Pemeriksaan migrasi di Room sekarang menggunakan perbandingan tidak peka huruf besar atau kecil. b/62875382

  • Memperbaiki konfigurasi proguard untuk artefak Lifecycle. b/62113696

1.0.0 Alfa 3 - 15 Juni 2017

Perubahan API

  • @OnLifecycleEvent sekarang hanya mendukung 1 parameter peristiwa. Ini adalah perubahan untuk persiapan pada dukungan Java 8 sehingga kami dapat bermigrasi ke antarmuka dengan metode default di masa mendatang. Sehubungan dengan perubahan ini, hanya metode teranotasi @OnLifecycleEvent(ON_ANY) yang dapat menerima parameter kedua tipe Event (parameter pertama adalah LifecycleOwner). Lihat dokumen Lifecycle untuk informasi selengkapnya.

  • Kelas LifecycleActivity dan LifecycleFragment dipindah ke artefak android.arch.lifecycle:extensions.

  • MigrationTestHelper menerima instance Instrumentasi sebagai ganti Context agar dapat membaca skema dari aset pengujian dan membuat database dalam konteks aplikasi.

  • Anotasi @Insert, @Delete, dan @Update dalam metode @DAO sekarang dapat menerima Iterable sebagai jenis parameter. b/62259820

Perbaikan Bug

  • Metode yang diganti bersama peristiwa siklus proses tidak lagi disebut berulang kali.

  • Beberapa parameter IN sekarang ditangani dengan benar. b/62608681

  • Kelas DAO abstrak sekarang dapat memiliki konstruktor yang menerima instance @Database. b/38488747

  • DAO sekarang dapat memiliki kelas/antarmuka super dengan parameter jenis. b/62103620

1.0.0 Alfa 2 - 2 Juni 2017

Perubahan API

Perbaikan Bug

  • File proguard untuk siklus proses. (b/62113696)
  • Hilangnya data dengan Pengonversi Jenis. (b/62100716)
  • Memungkinkan pengembalian Long[] dari kueri @Insert.

1.0.0 Alfa 1 - 17 Mei 2017

MinSDK: 14

Saran umum

  • Sementara kami melakukan banyak pengujian sebelum peluncuran, Komponen Arsitektur saat ini dalam versi alfa. Jika Anda membuat aplikasi produksi, perhatikan bahwa API akan berubah sebelum rilis 1.0 dan mungkin tidak sepenuhnya tangguh. Jika Anda tidak nyaman dalam men-debug di library yang Anda gunakan, kami sarankan untuk mencoba Komponen Arsitektur sebagai proyek sampingan terlebih dahulu.

  • Kami tidak menyarankan semua orang untuk bermigrasi hari ini. Kami akan menyiapkan panduan migrasi untuk rilis 1.0 komponen arsitektur.

Keterbatasan dan masalah umum