Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Arsip Catatan Rilis Komponen Arsitektur

15 Januari 2019

WorkManager

WorkManager 1.0.0-beta02 dirilis. Rilis ini berisi beberapa perbaikan bug.

Perbaikan Bug

  • Memperbaiki kasus ekstrem ketika pekerjaan berkala berjalan lebih dari satu kali per interval pada perangkat yang menjalankan Android 6.0 (API level 23). b/121998363
  • Memperbaiki ConcurrentModificationException di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih rendah. b/121345393
  • Memperbaiki error eksekusi pekerjaan ketika Batasan tidak terpenuhi di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih rendah. b/122578012
  • Mengoptimalkan penanganan penyelesaian pekerjaan agar menjadi lebih cepat dalam beberapa kasus ekstrem. b/122358129
  • Menambahkan perubahan untuk mengatasi potensi kondisi race di antara beberapa instance LiveData yang digunakan WorkManager.
  • Beralih ke menggunakan dependensi Room 1.1.1, bukan 1.1.1-rc01; kedua versi ini sama persis. b/122578011

19 Desember 2018

WorkManager

WorkManager 1.0.0-beta01 dirilis. Rilis ini tidak berisi perubahan API; ke depannya, WorkManager diharapkan tetap stabil terhadap API hingga versi berikutnya kecuali jika ada masalah genting. Rilis ini berisi beberapa perbaikan bug.

Perbaikan Bug

  • Turunan yang sebelumnya dibatalkan dari pekerjaan induk yang berhasil diselesaikan tidak akan dijalankan lagi. b/120811767
  • Class logging diinisialisasi dengan benar (terutama muncul selama pengujian).

18 Desember 2018

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

Kami memilih untuk tidak melanjutkan pengembangan artefak android.arch.navigation:navigation-testing. Meskipun terbukti bermanfaat untuk pengujian internal NavController, kami sangat merekomendasikan strategi pengujian alternatif, seperti memalsukan instance NavController untuk memverifikasi bahwa panggilan navigate() yang benar dilakukan. Pendekatan ini dibahas mendalam pada Single Activity Talk di AndroidDevSummit 2018 dan kami akan menyusun dokumentasi lainnya khusus mengenai pengujian dengan Navigation.

Fitur Baru

  • MenuItem dengan menuCategory="secondary" tidak akan lagi memunculkan data sebelumnya saat digunakan dengan metode NavigationUI. b/120104424
  • AppBarConfiguration kini memungkinkan Anda menetapkan instance OnNavigateUpListener fallback yang akan dipanggil jika navController.navigateUp() menampilkan false. b/79993862 b/120690961

Perubahan yang Dapat Menyebabkan Gangguan

  • Saat menggunakan <argument> dengan argType="reference", Navigation tidak lagi mengurai referensi, tetapi memberikan ID resource mentahnya sendiri. b/111736515
  • onNavDestinationSelected() sekarang muncul kembali ke tujuan awal grafik navigasi Anda secara default, sehingga konsisten dengan metode setup. Tambahkan menuCategory="secondary" ke MenuItem Anda untuk menghindari munculnya data sebelumnya. aosp/852869
  • Metode fromBundle() dari class Args yang dihasilkan sekarang mengambil Bundle non-null, bukan Bundle nullable aosp/845616

Perbaikan Bug

  • Argumen kini diurai dengan benar dari deep link sebagai argType yang tepat, bukan selalu sebagai string b/110273284
  • Navigation kini mengekspor resource publiknya dengan benar b/121059552
  • Safe Args kini kompatibel dengan Plugin Android Gradle 3.4 Canary 4 dan yang lebih baru b/119662045

12 Desember 2018

WorkManager

WorkManager 1.0.0-alpha13 dirilis. Rilis ini berisi perubahan minor pada API yang akan berguna bagi sebagian pengguna Kotlin.

Perubahan API

  • androidx.work.Result telah dipindahkan agar menjadi class dalam di ListenableWorker. Hal ini mencegah masalah pemfaktoran ulang dengan class level atas Kotlin, Result. Perubahan API ini dapat menyebabkan gangguan. b/120564418

Perubahan API yang Dapat Menyebabkan Gangguan

  • androidx.work.Result telah dipindahkan agar menjadi class dalam di ListenableWorker.

6 Desember 2018

Paging

Paging 2.1.0-rc01 dirilis tanpa perubahan dari versi 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.

Fitur Baru

  • Label tujuan, jika digunakan dengan metode NavigationUI, sekarang akan otomatis mengganti instance {argName} dalam android:label Anda dengan argumen yang benar b/80267266
  • Navigation sekarang bergantung pada Support 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 Anda untuk menghapus semua tujuan dari data sebelumnya. b/119628354
  • ActivityNavigator.Extras sekarang menggunakan pola Builder dan menambahkan kemampuan untuk menetapkan tanda Intent.FLAG_ACTIVITY_ apa pun aosp/828140
  • NavController.onHandleDeepLink telah diubah namanya menjadi handleDeepLink aosp/836063
  • Banyak class dan metode yang tidak dimaksudkan untuk menjadi subclass, seperti NavOptions, NavInflater, NavDeepLinkBuilder, dan AppBarConfiguration, telah dibuat finalaosp/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 Fragment telah dipindahkan ke FragmentNavigator, sehingga memudahkan pendelegasian pembuatan Fragment ke FragmentFactory. b/119054429
  • Constructor untuk NavGraphNavigator tidak lagi menggunakan Context aosp/835340
  • NavigatorProvider sekarang adalah class, bukan antarmuka. NavigatorProvider yang ditampilkan oleh getNavigatorProvider() tidak berubah fungsinya. aosp/830660
  • NavDestination.navigate() telah dihapus Panggil navigate() di Navigator sebagai gantinya. aosp/830663
  • Pemfaktoran ulang Navigator secara signifikan, yang meniadakan kebutuhan akan OnNavigatorNavigatedListener dan sebagai gantinya meminta navigate menampilkan NavDestination yang menjadi tujuan navigasi.
  • Instance Navigator tidak dapat lagi mengirimkan peristiwa pop ke NavController. Sebaiknya gunakan OnBackPressedCallback untuk mengintersep penekanan tombol kembali dan memanggil navController.popBackStack(). aosp/833716

Perbaikan Bug

  • popUpTo sekarang berfungsi secara konsisten saat 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 Args mendukung objek Serializable, termasuk nilai Enum. Jenis Enum dapat menetapkan nilai default menggunakan literal enum tanpa nama class (misalnya app:defaultValue="READ") b/111316353
  • Safe Args mendukung array dari semua jenis yang didukung. b/111487504
  • Safe Args sekarang mengabaikan subfolder direktori resource b/117893516
  • Safe Args 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. Versi ini kemungkinan akan dirilis sebagai versi beta pertama kami. alpha12 juga berisi pembaruan dokumentasi yang lengkap.

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. Artinya, artefak work-firebase tidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang.
  • Menggabungkan Payload ke dalam Result. Result kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture kini akan menampilkan Result, bukan Payload. Worker tidak memiliki metode getter and setter untuk Data output. Perubahan ini dapat menyebabkan gangguan.
  • Menambahkan Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit) dan Constraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit) serta varian untuk mendukung URI konten pemicu yang lambat dengan lebih baik. 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(). Perubahan ini dapat menyebabkan gangguan.
  • Class ContentUriTriggers dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Perubahan ini dapat menyebabkan gangguan.
  • Menghapus metode vararg yang tersisa di WorkManager, WorkContinuation, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada dengan Arrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode. Perubahan ini dapat menyebabkan gangguan.
  • Menghapus varian WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metode combine yang ada dapat lebih mudah dipahami. Perubahan ini dapat menyebabkan gangguan.

Perbaikan Bug

  • Penerapan pre-Marshmallow kini lebih andal dalam melakukan pemulihan dari penghentian proses tugas yang sudah dieksekusi.
  • LiveData yang diamati melalui observeForever dilacak melalui WorkManager. Perbaikan ini merupakan backport dari perbaikan library Room. b/74477406
  • Data.Builder.build() kini menampilkan pengecualian jika objek yang diserialisasi melebihi ukuran maksimumnya. Sebelumnya, pengecualian hanya terjadi pada thread latar belakang yang tidak dapat Anda tangani dengan baik.
  • Pekerjaan yang dihentikan vs dibatalkan kini dibedakan dengan lebih baik; getWorkInfoById() akan menampilkan WorkInfo dengan State CANCELLED selama ListenableWorker.onStopped().
  • Memperlakukan null Result sebagai kegagalan di 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. Artinya, artefak work-firebase tidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang.
  • Menggabungkan Payload ke dalam Result. Result kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melalui Result.success() (atau Result.success(Data)), Result.failure() (atau Result.failure(Data)), dan Result.retry(). ListenableFuture kini akan menampilkan Result, bukan Payload. Worker tidak memiliki metode getter and setter untuk Data output.
  • Menambahkan metode ekstensi Kotlin Operation.await() dan ListenableFuture.await().
  • Mengganti nama Operation.getException() menjadi Operation.getThrowable().
  • Class ContentUriTriggers dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik.
  • Menghapus metode vararg yang tersisa di WorkManager, WorkContinuation, dan OneTimeWorkRequest untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada dengan Arrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode.
  • Menghapus varian WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metode combine yang ada dapat lebih mudah dipahami.

4 Desember 2018

Room

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

Perubahan API

  • FTS tokenizer dalam @Fts3/@Fts4 sekarang menggunakan String, bukan Enum. Ini memungkinkan penggunaan tokenizer kustom di Room. Tokenizer bawaan tetap ditentukan di FtsOptions sebagai konstanta string. b/119234881

Fitur Baru

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

Perbaikan Bug

  • Memperbaiki bug di mana Room salah mencoba untuk menemukan constructor dengan kolom dalam properti ignoredColumns untuk @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 di mana Room menolak berbagai implementasi Collection lain sebagai argumen dari 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
  • Mengupdate 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. Ada sejumlah perubahan API yang dapat menyebabkan gangguan dalam rilis ini; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.

Perubahan API

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

Perbaikan Bug

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

Perubahan API yang Dapat Menyebabkan Gangguan

  • WorkStatus diganti namanya menjadi WorkInfo. Semua varian metode getStatus yang sesuai telah diganti namanya menjadi varian getWorkInfo yang sesuai.
  • ListenableWorker.onStopped() tidak lagi menerima argumen boolean jika WorkRequest dibatalkan. WorkManager tidak lagi membuat pembedaan 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 Collections.
  • ListenableWorker.onStartWork() diganti namanya menjadi ListenableWorker.startWork().
  • Constructor untuk WorkStatus tidak lagi menjadi bagian dari API publik.
  • Configuration.getMaxJobSchedulerID() dan Configuration.getMinJobSchedulerID() masing-masing diganti namanya menjadi Configuration.getMinJobSchedulerId() dan Configuration.getMaxJobSchedulerId().
  • Semua varian metode enqueue dan cancel di WorkManager sekarang menampilkan jenis Operation baru.
  • Semua varian enqueue tidak lagi menerima vararg untuk WorkRequest.
  • Mencoba untuk melakukan initialize WorkManager lebih dari sekali per proses sekarang akan menghasilkan IllegalStateException.

1 November 2018

Paging

Paging 2.1.0-beta01 dirilis tanpa perubahan dari versi 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 dalam @Relation. b/117680932

Perbaikan Bug

  • Memperbaiki bug yang membuat Room menjalankan I/O disk di thread utama saat berlangganan dan berhenti berlangganan dari jenis nilai yang ditampilkan Rx. b/117201279
  • Memperbaiki bug yang membuat Room gagal menemukan konverter jenis yang sesuai untuk kolom dalam class entity Kotlin. b/111404868
  • Memperbaiki bug di mana 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 build 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 kini memiliki dependensi pada library standar Kotlin. API ini telah diubah agar lebih konsisten dengan konvensi Kotlin, tetapi Anda dapat terus menggunakannya untuk pengujian yang ditulis dalam Java.
  • Grafik navigasi terdaftar di manifes metadata tidak lagi didukung. b/118355937
  • Actions 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 error yang terjadi setelah perubahan konfigurasi saat menggunakan Navigator kustom. b/110763345

Safe Arg

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

12 Oktober 2018

Paging

Paging 2.1.0-alpha01 dirilis dengan dua tambahan utama - page dropping, dan library ekstensi KTX untuk setiap artefak - selain 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 memantau kapan 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. Hal ini memungkinkan Anda untuk menyinkronkan pertukaran PagedList dengan update UI lainnya. b/73781068
  • Menambahkan PagedList.getLoadedCount() untuk memberitahukan banyaknya item dalam memori. Perlu diketahui bahwa nilai yang ditampilkan akan 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 jika indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.
  • Memperbaiki kasus di mana ukuran pemuatan awal yang terlalu kecil dan juga 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 dalam 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 class yang sebelumnya deprecated, terutama konstruktor Worker default. Perubahan API ini dapat menyebabkan gangguan.
  • Mengganti nama NonBlockingWorker menjadi ListenableWorker, yang kini merupakan class publik yang dapat dilihat dan siap digunakan.
    • ListenableWorker menyediakan akses ke satu metode abstrak, ListenableFuture<Payload> onStartWork(), yang dipanggil pada thread utama. Anda dapat menentukan untuk memulai dan memproses pekerjaan secara asinkron. Setelah selesai, Anda harus mengupdate ListenableFuture sesuai hasilnya. Penerapan referensi ListenableFuture disediakan dalam paket Futures di alpha02 (lihat di bawah pada bagian WorkManager).
    • 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 penerapan referensi untuk ListenableWorker yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
  • Antarmuka WorkerFactory dan penerapan konkret DefaultWorkerFactory telah digabungkan menjadi class abstrak yang disebut WorkerFactory. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instance WorkerFactory yang dibuat pengguna. Perubahan ini dapat menyebabkan gangguan.
  • Menghapus WorkManager.synchronous() dan WorkContinuation.synchronous() serta semua metode yang terkait. Menambahkan ListenableFuture<Void> sebagai jenis nilai yang ditampilkan dari banyak metode dalam API. Perubahan API ini dapat menyebabkan gangguan.
    • Anda kini dapat melakukan perolehan dan pengamatan secara sinkron menggunakan ListenableFuture. Misalnya, WorkManager.enqueue() sebelumnya digunakan untuk menampilkan void, tetapi sekarang akan menampilkan ListenableFuture<Void>. Anda dapat memanggil ListenableFuture.addListener(Runnable, Executor) atau ListenableFuture.get() untuk menjalankan kode setelah operasi selesai.
    • Perlu diketahui bahwa ListenableFuture ini tidak memberi tahu Anda apakah operasi berhasil atau gagal; hanya memberi tahu bahwa operasi selesai. 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?). Hal ini terjadi dalam kontrak Future.
    • Untuk mempertahankan kesamaan dengan metode getStatus* yang tersinkron, kami menyediakan varian ListenableFuture, dan mengganti nama saat ini yang menampilkan LiveData agar secara eksplisit memiliki "LiveData" sebagai bagian dari nama tersebut (misalnya, getStatusesByIdLiveData(UUID)). Perubahan API ini dapat menyebabkan gangguan.

Perbaikan Bug

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

Perubahan API yang Dapat Menyebabkan Gangguan

  • Menghapus semua metode dan class yang sebelumnya deprecated, terutama konstruktor Worker default.
  • Antarmuka WorkerFactory dan penerapan konkret DefaultWorkerFactory telah digabungkan menjadi class 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 dirilis.

Perubahan API

  • Developer kini 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 pemetaan FTS3 atau FTS4 . Class yang dianotasi dengan @Entity sekarang juga dapat dianotasi dengan @Fts3 atau @Fts4 untuk mendeklarasikan class dengan tabel penelusuran teks lengkap pemetaan. Opsi FTS untuk penyesuaian lebih lanjut tersedia melalui metode anotasi. b/62356416
  • View: Sekarang Room mendukung deklarasi class sebagai kueri tersimpan, yang disebut juga view, menggunakan anotasi @DatabaseView. b/67033276
  • Nilai Otomatis: Room kini mendukung deklarasi class beranotasi AutoValue sebagai entity dan POJO. Anotasi Room @PrimaryKey, @ColumnInfo, @Embedded, dan @Relation sekarang dapat dideklarasikan dalam metode abstrak milik class yang dianotasikan nilai otomatis. Pastikan anotasi ini juga harus disertai dengan @CopyAnnotations agar Room dapat memahaminya dengan baik. b/62408420
  • Dukungan Tambahan untuk Jenis Nilai yang Ditampilkan RX: Metode DAO yang dianotasi dengan @Insert, @Delete, atau @Update sekarang mendukung jenis nilai yang ditampilkan Rx Completable, Single<T>, dan Maybe<T>. b/63317956
  • Jenis yang Tidak Berubah dengan @Relation: Sebelumnya Room memerlukan kolom beranotasi @Relation agar dapat disetel, tetapi sekarang kolom tersebut dapat berupa parameter constructor.
  • enableMultiInstanceInvalidation: Adalah API baru di RoomDatabase.Builder untuk mengaktifkan pembatalan di berbagai instance RoomDatabase yang menggunakan file database yang sama. Mekanisme pembatalan multi-instance ini juga berlaku pada banyak proses. b/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Adalah API baru di RoomDatabase.Builder untuk otomatis membuat ulang database jika terjadi downgrade. b/110416954
  • ignoredColumns: Adalah API baru dalam anotasi @Entity yang dapat digunakan untuk membuat daftar kolom yang diabaikan menurut namanya. Berguna untuk mengabaikan kolom turunan pada suatu entity. b/63522075

Perubahan API / Perilaku

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

Perbaikan Bug

  • Memperbaiki dua masalah di mana Room tidak dapat pulih dengan baik dari database yang rusak atau migrasi yang bermasalah selama inisialisasi. b/111504749 dan b/111519144
  • Sekarang Room akan menggunakan dengan tepat konstruktor utama Kotlin dalam class data, sehingga menghindari perlunya mendeklarasikan kolom sebagai vars. b/105769985

1 Oktober 2018

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

Paging

Perbaikan Bug

  • Memperbaiki error yang dapat terjadi pada scroll yang 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 dalam 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 menggunakan parameter Navigator.Extras.
  • Metode getGraph() NavController sekarang adalah NonNull b/112243286

Perbaikan Bug

  • NavigationUI.setupWithNavController() tidak lagi membocorkan view jika digunakan dengan view dari tujuan individu b/111961977
  • onSaveState() navigator sekarang hanya dipanggil satu kali b/112627079

Safe Arg

  • Class Directions tujuan Navigation kini memperluas class Directions induknya jika ada. b/79871405
  • Class Directions dan Args kini 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 jobs". 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

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

Perubahan yang Dapat Menyebabkan Gangguan

  • Konstruktor default Worker dan NonBlockingWorker sudah tidak digunakan lagi. Silakan bermigrasi ke constructor 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 peka terhadap 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.
  • Mengoreksi pesan pengecualian dalam Data untuk menunjukkan batas sebesar 10 KB.
  • Menurunkan nilai maksimum Configuration.setMaxSchedulerLimit(int) menjadi 50 untuk memperhitungkan beberapa latensi dalam penyelesaian pemrosesan 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 kini dapat dengan tepat membatalkan semua salinan tertunda dari pekerjaan tersebut di Penjadwal lainnya. Hal ini menyebabkan batas pekerjaan JobScheduler terlampaui. b/111569265
  • Memperbaiki ConcurrentModificationException dalam ConstraintTracker. b/112272753
  • Mengubah anotasi jenis nilai yang ditampilkan untuk Data.getBooleanArray(String) dan Data.getIntArray(String) menjadi @Nullable, bukan @NonNull. b/112275229

Perubahan API

  • Worker sekarang memperluas class baru, NonBlockingWorker. Perubahan ini tidak memengaruhi penggunaan saat ini. Di masa mendatang, NonBlockingWorker akan menjadi entity yang sepenuhnya didukung untuk solusi threading kustom.
  • Mengubah anotasi jenis nilai yang ditampilkan untuk Data.getBooleanArray(String) dan Data.getIntArray(String) menjadi @Nullable, bukan @NonNull. b/112275229
  • Ekstensi Kotlin: menghentikan Map.toWorkData() dan menambahkan workDataOf(vararg Pair<String, Any?>) level teratas agar lebih konsisten dengan API yang 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() class Generated Args. b/111450897
  • Memperbaiki kegagalan build di Safe Args. b/109409713
  • Memperbaiki konversi dari ID resource ke nama Java. b/111602491
  • Memperbaiki pesan error tentang nullability di plugin Safe Args.
  • Menambahkan anotasi nullability yang hilang.

6 Agustus 2018

Versi AndroidX dari Lifecycle, Room, dan Paging merilis versi 2.0.0-rc01. Semua artefak tidak berubah dari versi 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 dalam mode Istirahatkan. b/111469837
  • Memperbaiki kondisi race saat melacak batasan yang menyebabkan WorkManager mengalami error. googlecodelabs/android-workmanager/issues/56
  • Membuat WorkRequest yang unik saat menggunakan WorkRequest.Builder#build(). b/111408337
  • Mengaktifkan penggunaan RescheduleReceiver hanya jika ada WorkRequest yang membutuhkannya. b/111765853

24 Juli 2018

WorkManager

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

Perubahan API

  • WorkManager.getInstance() sekarang dianotasikan dengan @NonNull, bukan @Nullable. Sebaliknya, jika singleton tidak diinisialisasi dengan benar dalam kasus inisialisasi manual, metode ini akan memunculkan IllegalStateException. Perubahan API ini dapat menyebabkan gangguan.
  • Menambahkan API baru, Configuration.Builder.setMinimumLoggingLevel(int), yang dapat mengontrol panjang WorkManager. Secara default, WorkManager mencatat Log.INFO dan di atasnya.
  • Mengubah tanda tangan Data.getString() sehingga tidak lagi menggunakan nilai default (secara implisit adalah null). Perubahan API ini dapat menyebabkan gangguan.
  • Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai @hide. Ini mencakup konstruktor Constraints, Data.toByteArray(), dan Data.fromByteArray(byte[]). Perubahan API ini dapat menyebabkan gangguan.

Perbaikan Bug

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

Perubahan yang Dapat Menyebabkan Gangguan

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

19 Juli 2018

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

Perubahan API/Perilaku

  • NavHostFragment akan selalu menetapkan Fragment saat ini sebagai fragmen navigasi utama, yang 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 error dari Safe Args kini dapat diklik. b/111534438
  • Class Args kini menegaskan bahwa atribut NonNull sebenarnya bukan null. b/111451769
  • Anotasi NonNull tambahan telah ditambahkan ke NavDirections dan class 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 Args 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 menampilkan false jika data sebelumnya kosong atau jika ID tujuan yang ditentukan tidak ada di data sebelumnya b/110893637
  • FragmentNavigator kini mengabaikan operasi navigasi setelah FragmentManager memiliki status tersimpan, yang menghindari pengecualian "Tidak dapat melakukan tindakan ini setelah onSaveInstanceState" b/110987825

Safe Arg

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

Perbaikan Bug

  • Memperbaiki masalah saat menavigasi selama metode siklus proses Fragment b/109916080
  • Memperbaiki masalah saat menjelajahi grafik bersarang beberapa kali b/110178671
  • Memperbaiki masalah saat menggunakan setPopUpTo dengan tujuan pertama dalam 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 kini menambahkan aturan keep 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 agar hanya mempertahankan 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 Observable RxJava2
  • Implementasi DAO dan Database yang dihasilkan sekarang sudah final

Perbaikan Bug

  • Menentukan nama class/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 dalam 1.0.1) Memperbaiki error di mana PagedListAdapter dan AsyncPagedListDiffer gagal menandai peristiwa pemindahan. b/110711937

26 Juni 2018

Paging

Paging 1.0.1 dirilis dengan satu perbaikan bug di runtime. Kami sangat menganjurkan penggunaan 1.0.1 untuk mendapatkan 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 menandai peristiwa pemindahan. b/110711937

WorkManager

WorkManager 1.0.0-alpha04 dirilis.

Perbaikan Bug

  • PeriodicWorkRequest kini dijadwalkan ulang dengan benar saat menggunakan penerapan 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 versi 1.1.1-rc1.

WorkManager

WorkManager 1.0.0-alpha03 dirilis.

Perbaikan Bug

  • Memperbaiki kondisi race dalam penerapan berbasis AlarmManager. b/80346526.

  • Memperbaiki tugas duplikat saat menggunakan JobScheduler setelah reboot perangkat.

  • Tugas dengan pemicu URI Konten kini tetap ada meskipun perangkat di-reboot. b/80234744

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

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

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

  • WorkManager kini menggunakan Room versi 1.1.1-rc1.

Perubahan API

  • Menambahkan getStatusesSync(), versi WorkContinuation.getStatuses() yang tersinkron.

  • Worker memiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi. Worker.isStopped() akan menampilkan true jika penghentian jenis apa pun diminta. Worker.isCancelled() akan menampilkan true jika tugas dibatalkan secara eksplisit. b/79632247

  • Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Dukungan ini akan melalui Worker.getNetwork().

  • Menambahkan Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit) sehingga Anda dapat memberlakukan jumlah tugas yang dapat dikirim ke JobScheduler atau AlarmManager. Dengan demikian, WorkManager tidak akan menggunakan semua slot JobScheduler yang tersedia.

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

  • Worker.getRunAttemptCount() menampilkan jumlah percobaan saat ini untuk Worker tertentu. b/79716516

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

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

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

Perubahan Perilaku

  • Menambahkan tag implisit untuk semua WorkRequest, yang merupakan nama class yang sepenuhnya memenuhi syarat untuk Worker. Hal ini memungkinkan Anda menghapus WorkRequest tanpa tag atau saat id tidak tersedia. b/109572351

Perubahan yang Dapat Menyebabkan Gangguan

  • Mengganti nama Worker.WorkerResult menjadi Worker.Result.

  • Worker.onStopped kini memiliki parameter isCancelled tambahan yang ditetapkan ke true saat Worker dibatalkan secara eksplisit.

7 Juni 2018

Navigation 1.0.0-alpha02 dirilis.

Perubahan Perilaku

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

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

Perbaikan Bug

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

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

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

  • Memperbaiki StackOverflowError saat menggunakan NavDeepLinkBuilder. b/109653065

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

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

  • Navigation sekarang membuat data sebelumnya sintetis yang benar untuk grafik bersarang. b/79734195

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

Perubahan API

  • Atribut clearTask untuk tindakan dan API terkaitnya di NavOptions tidak digunakan lagi. b/80338878

  • Atribut launchDocument untuk tindakan dan API terkaitnya di NavOptions tidak digunakan lagi. b/109806636

24 Mei 2018

WorkManager 1.0.0-alpha02 dirilis.

WorkManager

Perbaikan Bug

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

  • Memperbaiki masalah yang menyebabkan Worker dijadwalkan ulang pada Application.onCreate(). b/79660657

  • Memperbaiki masalah ketika Anda dapat menjadwalkan lebih banyak pekerjaan dari yang diizinkan oleh OS. b/79497378

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

  • Penerapan AlarmManager kini melakukan pembersihan 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() kini 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.

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

  • Menambahkan overload javax.time.Duration untuk API yang menggunakan kombinasi durasi dan TimeUnit. Hal ini dilindungi 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() saja.

16 Mei 2018

Paging RxJava2 1.0.0-rc1 dan Room 1.1.1-rc1 dirilis. Kami sangat menganjurkan penggunaan Room versi 1.1.1-rc1 sebagai pengganti versi 1.1.0 jika Anda menggunakan migrasi.

Room

Memperbaiki bug di mana Room tidak menangani inisialisasi pasca-migrasi dengan benar b/79362399

Paging

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

8 Mei 2018

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

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

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

Library Baru: Navigation

Navigation menyediakan framework untuk membuat navigasi dalam aplikasi. Rilis awalnya adalah 1.0.0-alpha01.

Library Baru: WorkManager

WorkManager menyederhanakan penjadwalan dan eksekusi pekerjaan latar belakang yang terjamin dan peka terhadap batasan. Rilis awalnya adalah 1.0.0-alpha01.

AndroidX

Komponen arsitektur berpindah menjadi bagian dari AndroidX, termasuk nama paket, nama artefak, dan dependensi pada library AndroidX lainnya yang diupdate. Semua ini dirilis pada versi 2.0.0-alpha1 untuk digunakan bersama 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 kini kompatibel dengan Kotlin 1.2.40. b/78328708

19 April 2018

Kandidat Rilis Paging

Paging versi 1.0.0-rc1 dan Room versi 1.1.0-beta3 dirilis.

Paging

Kami tidak memiliki masalah umum atau fitur baru lagi yang dijadwalkan untuk rilis Paging 1.0.0. Silakan upgrade project Anda untuk menggunakan 1.0.0-rc1 dan bantu kami melakukan uji banding agar dapat merilis 1.0.0 yang padu.

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

Room

Perbaikan Bug

  • Memperbaiki error kompilasi saat POJO Kotlin mereferensikan entity relasi yang ditentukan 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 versi beta untuk waktu singkat sebelum menjadi kandidat rilis. Kami tidak merencanakan perubahan API lagi untuk Paging 1.0, dan batasan untuk setiap perubahan API sangat tinggi.

Dukungan RxJava2 alfa 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 memberikan alternatif RxJava2 untuk LivePagedListBuilder, yang mampu merancang Observable dan Flowable, dengan menggunakan Scheduler alih-alih 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();
    

Paging

Fitur Baru

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

Perubahan API

  • Perubahan API untuk memperjelas peran eksekutor dalam builder:

    • 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 eksekutor yang ditentukan, bukan kumpulan thread IO Komponen Arch.

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

Room

Perbaikan Bug

  • Memperbaiki bug penting dalam implementasi Single dan Maybe Rx Room di mana kueri didaur ulang lebih awal, sehingga terjadi masalah jika Anda menambahkan lebih dari 1 observer ke instance Single atau Maybe yang ditampilkan. 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 kini mencoba mengembalikan ruang ke sistem operasi dengan menyetel checkpoint WAL dan melakukan VACUUM database.

  • @RawQuery sekarang menerima Pojo apa pun untuk properti observedEntities selama Pojo tersebut mereferensikan satu atau beberapa entity melalui kolom Embedded atau Relation. b/74041772

  • Paging: Implementasi DataSource Room sekarang menangani dependensi multi-tabel dengan benar (seperti hubungan dan gabungan). Sebelumnya penanganan tersebut 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 tersebut memungkinkan class ini untuk digunakan tanpa dependensi runtime, misalnya dalam paging:common di bawah.

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

Paging

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

Paging alpha7 direncanakan menjadi rilis final sebelum Paging mencapai beta.

Perubahan API

  • Objek DataSource.LoadParams sekarang memiliki constructor publik dan objek DataSource.LoadCallback sekarang abstrak. Hal ini memungkinkan penggabungan DataSource atau pengujian DataSource secara langsung dengan callback palsu. b/72600421
  • Mapper 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 tindakan yang sama untuk batch processing (misalnya, jika item yang dimuat dari SQL perlu mengkueri database terpisah, hal tersebut dapat dilakukan sebagai batch.)
  • PagedList#getDataSource() ditambahkan sebagai metode kemudahan b/72611341
  • Semua class yang tidak digunakan lagi telah dihapus dari API, termasuk sisa-sisa dari paket recyclerview.extensions dan LivePagedListProvider.
  • DataSource.Factory diubah dari antarmuka menjadi class abstrak guna memungkinkan fungsi pemetaan.

Perbaikan Bug

  • Mengubah Builder menjadi final. b/70848565
  • Memperbaiki implementasi DataSource Room untuk menangani kueri multi-tabel - perbaikan ini disertakan dalam Room 1.1.0-beta1, lihat di atas.
  • Memperbaiki bug di mana BoundaryCallback.onItemAtEndLoaded tidak dipanggil untuk PositionalDataSource jika placeholder diaktifkan dan ukuran total merupakan kelipatan persis dari ukuran halaman.

2 Maret 2018

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

Perubahan API

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

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

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

Perbaikan Bug

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

  • Room kini menamai dengan benar class Dao yang dihasilkan untuk menghindari konflik nama saat 2 atau lebih antarmuka Dao merupakan class dalam di paket yang sama dan memiliki nama yang sama. b/73536380

  • Jenis kolom generik di Pojo diurai dengan benar sebagai anggota class 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 meng-escape nama kolom dengan benar. b/70925483

27 Februari 2018

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

Perubahan API

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

Class-class 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 Support Library 27.1.0 secara bersamaan.

** Panduan migrasi untuk Paging Alfa6: **

  • 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 referensi apa pun dari ListAdapterHelper ke AsyncListDiffer
    • getItem(index)/getItemCount() dihapus dan diganti dengan 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 dari setList() ke submitList()
    • diganti nama 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, penulisan 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 perangkat menjalankan API 16 atau yang lebih tinggi dan bukan merupakan perangkat dengan memori rendah. Anda dapat mengontrol perilaku ini menggunakan metode setJournalMode() pada RoomDatabase.Builder. b/67757002

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

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

  • Metode antarmuka dengan implementasi default kini didukung dalam metode @Transaction di class DAO. Ini berfungsi baik untuk Java 8 maupun Kotlin. b/72416735

Perbaikan Bug

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

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

  • Room kini menggunakan anotasi @Metadata Kotlin untuk membaca struktur class selama pemrosesan anotasi. Ini berarti, meskipun pojo diwarisi dari dependensi, nama parameter constructor-nya dapat dibaca dengan benar. b/67181813

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

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

  • Ruang sekarang menangani dengan benar kolom boolean? yang selalu muncul dalam class Kotlin. 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 sekarang telah dihapus. Gunakan FragmentActivity, AppCompatActivity, atau dukung Fragment.
  • Anotasi @NonNull telah ditambahkan ke ViewModelProviders dan ViewModelStores
  • Constructor ViewModelProviders tidak digunakan lagi. Gunakan metode statisnya secara langsung
  • ViewModelProviders.DefaultFactory tidak digunakan lagi - 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 memberikan kontrol yang lebih terperinci terkait dari versi skema awal mana migrasi destruktif diizinkan (dibandingkan dengan fallbackToDestructiveMigration) b/64989640
  • Room sekarang hanya mendukung Paging API yang lebih baru (alpha-4+), dan melepas dukungan untuk LivePagedListProvider yang tidak digunakan lagi. Untuk menggunakan alfa Room baru ini, Anda harus menggunakan Paging alpha-4 atau yang lebih tinggi, dan beralih dari LivePagedListProvider ke LivePagedListBuilder jika 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 signifikan, yang 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 di thread UI.
    • Perilaku error di sekitar parameter pemuatan awal lebih jelas
  • TiledDataSource diganti namanya 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 diganti namanya menjadi ItemKeyedDataSource agar perbedaannya jelas.

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

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

  • Constructor PagedList.Builder mengambil DataSource + PagedList.Config, sehingga sekarang lebih mirip dengan LivePagedListBuilder, dan mengizinkan operator diamond dalam bahasa Java, atau jenis yang ditentukan di Kotlin.

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

  • KeyedDataSource.loadBefore() tidak lagi berharap hasil akan dicadangkan.

  • PagedListAdapter.onCurrentListChanged() ditambahkan untuk memproses update tentang PagedList mana yang sedang ditampilkan.

Perbaikan Bug

  • Memperbaiki IndexOutOfBoundsException di PagedListAdapter(Helper) b/67883658

1.0.0 - 6 November 2017

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

Perbaikan Bug

Kandidat Rilis - 18 Oktober 2017

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

Tidak ada masalah umum atau fitur baru yang dijadwalkan untuk rilis 1.0.0. Silakan upgrade project Anda untuk menggunakan 1.0.0-rc1 dan bantu kami melakukan uji banding agar dapat merilis 1.0.0 yang padu.

Perubahan Perilaku

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

Perbaikan Bug

  • Room:

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

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

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

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

9 Oktober 2017

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

Perbaikan Bug

  • Peningkatan Dokumentasi Paging.

5 Oktober 2017

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

Perbaikan Bug

  • Lifecycle:

    • LiveDataReactiveStreams sekarang membatalkan langganan dengan benar dari penerbit sumber saat LiveData tidak aktif. b/62609183
    • Peristiwa Lifecycle disebarkan dengan benar ke class induk saat class induk berasal dari modul lain. b/63474615
    • LiveData menangani observer dengan benar saat observer 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 waktu kompilasi saat Pojo yang ditampilkan dalam metode @Query memiliki kolom @NonNull yang tidak cocok dengan kolom mana pun dalam respons kueri. Jika kolom ini @Nullable, Room hanya mencetak peringatan. b/67115337
    • Room sekarang memvalidasi indeks dalam versi OS yang lebih baru. b/63132683
    • Room akan memilih constructor non-arg secara default jika ada beberapa constructor yang cocok di Pojo. b/67353427
    • Kunci utama kolom tunggal dapat menjadi Nullable jika kunci tersebut adalah Integer atau Long. b/67086876
    • Pelacak pembatalan menangani entri ulang dalam mode uji coba dengan benar. b/65471397
    • Room sekarang memeriksa apakah ada karakter tidak valid dalam nama kolom dan 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 mencapai 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 menjadi stabil. Keduanya tidak diperlukan saat menggunakan Support Library 26.1.0 atau yang lebih baru.

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

Perubahan Versi

  • Lifecycle Extensions dan Room sekarang adalah versi beta 1
  • Paging sekarang versi 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 kini 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 sebaiknya memilih artefak ini daripada anotasi.

    • Karena adanya bug di beta1, Anda perlu menambahkan dependensi eksplisit pada modul android.arch.lifecycle:common:1.0.1 untuk menggunakan artefak common-java8 yang 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. Oleh karena itu, jika tidak langsung menggunakannya, Anda tidak perlu mengubah apa pun di file build.

Perubahan API

  • Room:

    • Anotasi @ColumnInfo sekarang mendukung penyetelan kolasi pada kolom. b/62007004
    • Kolom transient kini diabaikan secara default kecuali jika 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 kemudahan 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, Support Library 26.1.0 sekarang bergantung pada library-library ini. Baik AppCompatActivity maupun Support Fragment sekarang mengimplementasikan antarmuka LifecycleOwner.

Rilis ini juga bergantung pada Support Library 26.1.0 untuk memanfaatkan integrasi baru.

Library Baru: Paging

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

Perubahan API

Perbaikan Bug

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

  • Memperbaiki bug perbandingan observer MediatorLiveData. b/64413274

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

  • Memperbaiki bug di mana InvalidationTracker tidak mengirimkan daftar yang benar jika ada lebih dari 1 tabel yang 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

  • Batasan NOT NULL ditambahkan untuk kolom jenis dasar atau kolom yang dianotasi dengan NonNull. Ini mengubah struktur tabel Anda, jadi jika sudah menggunakan Komponen Arsitektur alfa 7 atau yang lebih lama, Anda perlu mengimplementasikan migrasi jika ingin mempertahankan datanya, atau menggunakan metode fallbackToDestructiveMigration() di 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, observer selalu dipanggil sesuai urutan penambahannya: jika observer1 ditambahkan sebelum observer2, maka observer tersebut akan menerima ON_CREATE dan semua peristiwa lain sebelum observer2. Hal ini tidak lagi berlaku untuk peristiwa penghancuran, karena untuk peristiwa tersebut, observer dipanggil dalam urutan terbalik. Jadi, perilaku saat ini adalah: jika observer1 ditambahkan sebelum observer2, maka ON_CREATE akan dikirim terlebih dahulu ke observer1, lalu ke observer2 (begitu juga untuk ON_START dan ON_RESUME), tetapi peristiwa ON_PAUSE akan dikirim terlebih dahulu ke observer2 dan baru setelah itu ke observer1 (begitu juga untuk ON_STOP dan ON_DESTROY).

  • Room memunculkan 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 builder. b/63872392

Perubahan API

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

  • Komponen arsitektur sekarang menjadikan Support Library 26.0.0 sebagai dependensi

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

  • ViewModels sekarang 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 memiliki parameter dari jenis entity berbeda. b/62682405

Perbaikan Bug

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

  • Pemeriksaan migrasi di Room sekarang menggunakan perbandingan tidak peka huruf besar/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 sebagai persiapan untuk dukungan Java 8 agar kami dapat bermigrasi ke antarmuka dengan metode default pada waktu mendatang. Sehubungan dengan perubahan ini, hanya metode beranotasi @OnLifecycleEvent(ON_ANY) yang dapat menerima parameter kedua dengan jenis Event (parameter pertama adalah LifecycleOwner). Lihat dokumentasi Lifecycle untuk detailnya.

  • Class LifecycleActivity dan LifecycleFragment dipindahkan ke dalam artefak android.arch.lifecycle:extensions.

  • MigrationTestHelper menerima instance Instrumentation, bukan Context, agar dapat membaca skema dari aset pengujian dan membuat database dalam konteks aplikasi.

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

Perbaikan Bug

  • Metode yang diganti dengan peristiwa lifecycle tidak lagi dipanggil beberapa kali.

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

  • Class DAO abstrak sekarang dapat memiliki constructor yang menerima instance @Database. b/38488747

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

1.0.0 Alfa 2 - 2 Juni 2017

Perubahan API

Perbaikan Bug

  • File proguard untuk lifecycle. (b/62113696)
  • Hilangnya data dengan Jenis Converter. (b/62100716)
  • Mendukung ditampilkannya 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 untuk men-debug di library yang Anda gunakan, kami merekomendasikan untuk mencoba Komponen Arsitektur sebagai project sampingan terlebih dahulu.

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

Pembatasan dan masalah umum