15 Januari 2019
WorkManager
WorkManager 1.0.0-beta02 dirilis. Rilis ini berisi beberapa perbaikan bug.
Perbaikan Bug
- Memperbaiki masalah ekstrem yang menyebabkan pekerjaan berkala dapat berjalan lebih dari satu kali per interval di perangkat yang menjalankan Android 6.0 (API level 23). b/121998363
- Memperbaiki
ConcurrentModificationExceptiondi perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. b/121345393 - Memperbaiki eksekusi pekerjaan yang salah saat Batasan tidak tercapai di perangkat yang menjalankan Android 5.1 (API level 22) atau yang lebih lama. b/122578012
- Mengoptimalkan penanganan penyelesaian pekerjaan agar menjadi lebih cepat pada beberapa kasus ekstrem. b/122358129
- Menambahkan perubahan untuk mengatasi potensi kondisi race di antara beberapa instance
LiveDatayang digunakan WorkManager. - Beralih untuk menggunakan dependensi
Room1.1.1dan bukan1.1.1-rc01; kedua versi ini identik. 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
Navigation 1.0.0-alpha09 dirilis. Rilis ini berisi perubahan API yang dapat menyebabkan gangguan;
harap 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 membuat tiruan instance NavController
untuk memastikan bahwa panggilan navigate() yang benar sudah dilakukan. Pendekatan ini
dibahas secara mendetail dalam
topik Single Activity di AndroidDevSummit 2018
dan kami akan menyusun dokumentasi tambahan secara khusus mengenai pengujian
dengan Navigation.
Fitur Baru
MenuItemdenganmenuCategory="secondary"tidak akan lagi menampilkan data sebelumnya saat digunakan dengan metodeNavigationUI. b/120104424AppBarConfigurationkini memungkinkan Anda menetapkan instanceOnNavigateUpListenerpenggantian yang akan dipanggil saatnavController.navigateUp()menampilkanfalse. b/79993862 b/120690961
Perubahan yang Dapat Menyebabkan Gangguan
- Saat menggunakan
<argument>denganargType="reference", Navigation tidak lagi mengurai referensi, tetapi akan memberikan ID resource mentahnya. b/111736515 onNavDestinationSelected()sekarang akan muncul kembali ke tujuan awal grafik navigasi Anda secara default, sehingga konsisten dengan metodesetup. TambahkanmenuCategory="secondary"keMenuItemuntuk menghindari munculnya data sebelumnya. aosp/852869- Metode
fromBundle()dari classArgsyang dihasilkan kini menggunakanBundlenon-null, bukanBundlenullable aosp/845616
Perbaikan Bug
- Argumen kini diurai dengan benar dari deep link sebagai
argTypeyang tepat, bukan selalu sebagai string b/110273284 - Navigation sekarang 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.Resulttelah dipindahkan agar menjadi class dalam diListenableWorker. 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.Resulttelah dipindahkan agar menjadi class dalam diListenableWorker.
6 Desember 2018
Paging
Paging 2.1.0-rc01 dirilis tanpa perubahan dari versi 2.1.0-beta01.
Navigation
Navigation 1.0.0-alpha08 dirilis. Rilis ini berisi perubahan API yang dapat menyebabkan gangguan;
harap lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah.
Fitur Baru
- Label tujuan, jika digunakan dengan metode
NavigationUI, sekarang akan otomatis mengganti instance{argName}dalamandroid:labelAnda dengan argumen yang benar b/80267266 - Navigation sekarang bergantung pada Support Library 28.0.0 b/120293333
Perubahan yang Dapat Menyebabkan Gangguan
OnNavigatedListenertelah diganti namanya menjadiOnDestinationChangedListenerb/118670572OnDestinationChangedListenersekarang juga meneruskanBundleargumen aosp/837142- Atribut
app:clearTaskdanapp:launchDocumentserta metode terkaitnya telah dihapus. Gunakanapp:popUpTodengan root grafik untuk menghapus semua tujuan dari data sebelumnya. b/119628354 ActivityNavigator.Extrassekarang menggunakan polaBuilderdan menambahkan kemampuan untuk menetapkan flagIntent.FLAG_ACTIVITY_apa pun aosp/828140NavController.onHandleDeepLinktelah diubah namanya menjadihandleDeepLinkaosp/836063- Sebagian class dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti
NavOptions,NavInflater,NavDeepLinkBuilder, danAppBarConfiguration, telah dijadikanfinalaosp/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, memudahkan penetapan delegasi pembuatan Fragment keFragmentFactory. b/119054429 - Konstruktor untuk
NavGraphNavigatortidak lagi menggunakanContextaosp/835340 - NavigatorProvider sekarang
merupakan class, bukan antarmuka.
NavigatorProvideryang ditampilkan olehgetNavigatorProvider()tidak berubah fungsinya. aosp/830660 NavDestination.navigate()telah dihapus. Sekarang, Anda dapat memanggilnavigate()diNavigator. aosp/830663- Pemfaktoran ulang
Navigatorsecara signifikan, yang meniadakan kebutuhan akanOnNavigatorNavigatedListenerdan memintanavigatemenampilkanNavDestinationyang menjadi tujuan navigasi. - Instance
Navigatortidak dapat lagi mengirimkan peristiwa kemunculan keNavController. Sebaiknya gunakanOnBackPressedCallbackuntuk mengintersep penekanan tombol kembali dan memanggilnavController.popBackStack(). aosp/833716
Perbaikan Bug
popUpTosekarang berfungsi secara konsisten saat tujuannya adalah elemen<navigation>b/116831650- Memperbaiki sejumlah bug yang mengakibatkan
IllegalArgumentExceptionsaat menggunakan grafik bertingkat b/118713731 b/113611083 b/113346925 b/113305559 - Atribut
dataPatterntujuan<activity>sekarang akan mengisi argumen dari argumen non-String dengan memanggiltoString()b/120161365
Safe Args
- Safe Args mendukung Objek yang dapat diserialisasi, 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
@Overridejika sesuai b/117145301
5 Desember 2018
WorkManager
WorkManager 1.0.0-alpha12 dirilis. Rilis ini berisi beberapa perubahan API yang dapat menyebabkan gangguan; 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, memperkenalkanRxWorker. Ini adalahListenableWorkeryang mengharapkanSingle<Payload>. - Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Artinya, artefak
work-firebasetidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payloadke dalamResult.Resultkini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()(atauResult.success(Data)),Result.failure()(atauResult.failure(Data)), danResult.retry().ListenableFuturekini akan menampilkanResult, bukanPayload.Workertidak memiliki metode pengambil dan penyetel untukDataoutput. Perubahan ini dapat menyebabkan gangguan. - Menambahkan
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)danConstraints.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()danListenableFuture.await(). - Mengganti nama
Operation.getException()menjadiOperation.getThrowable(). Perubahan ini dapat menyebabkan gangguan. - Class
ContentUriTriggersdan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Perubahan ini dapat menyebabkan gangguan. - Menghapus metode vararg yang tersisa di
WorkManager,WorkContinuation, danOneTimeWorkRequestuntuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada denganArrays.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; metodecombineyang ada dapat lebih mudah dipahami. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
- Implementasi pra-Marshmallow sekarang lebih dapat diandalkan dalam pemulihan dari penghentian proses pekerjaan yang sudah dieksekusi.
LiveDatayang diamati melaluiobserveForeverdilacak melalui WorkManager. Perbaikan ini merupakan backport dari perbaikan library Room. b/74477406Data.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 menampilkanWorkInfodenganStateCANCELLEDselamaListenableWorker.onStopped(). - Memperlakukan
Resultnullsebagai kegagalan diListenableWorker. 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-firebasetidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payloadke dalamResult.Resultkini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()(atauResult.success(Data)),Result.failure()(atauResult.failure(Data)), danResult.retry().ListenableFuturekini akan menampilkanResult, bukanPayload.Workertidak memiliki metode pengambil dan penyetel untukDataoutput. - Menambahkan metode ekstensi Kotlin
Operation.await()danListenableFuture.await(). - Mengganti nama
Operation.getException()menjadiOperation.getThrowable(). - Class
ContentUriTriggersdan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. - Menghapus metode vararg yang tersisa di
WorkManager,WorkContinuation, danOneTimeWorkRequestuntuk menyederhanakan API. Untuk memperbaiki masalah build, Anda dapat menggabungkan vararg yang ada denganArrays.asList(...). Kami masih menyertakan versi argumen tunggal dari masing-masing metode. - Menghapus varian
WorkContinuation.combine(OneTimeWorkRequest, *). Varian tersebut memberikan API yang membingungkan; metodecombineyang 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
tokenizerdalam@Fts3/@Fts4sekarang menggunakan String, bukan Enum. Ini memungkinkan penggunaan tokenizer kustom di Room. Tokenizer bawaan tetap ditentukan diFtsOptionssebagai konstanta string. b/119234881
Fitur Baru
- Couroutine: Metode DAO sekarang dapat berupa fungsi penangguhan. Untuk mendukung fungsi penangguhan di Room, artefak baru,
room-coroutines, dirilis. b/69474692 - Metode DAO yang dianotasi dengan
@Insert,@Delete, atau@Updatesekarang mendukungListenableFuturesebagai jenis nilai yang ditampilkan. b/119418331
Perbaikan Bug
- Memperbaiki bug saat Room salah mencoba untuk menemukan konstruktor dengan kolom dalam properti
ignoredColumnsuntuk@Entity. b/119830714 - Memperbaiki bug yang menyebabkan Room tidak menandai parameter metode DAO sebagai final dalam implementasi yang dihasilkan. b/118015483
- Memperbaiki bug yang menyebabkan prosesor Room tidak bekerja saat melaporkan error pada kueri yang memuat simbol khusus. b/119520136
- Memperbaiki bug yang menyebabkan Room menolak berbagai implementasi
Collectionlain sebagai argumen ekspresiIN. b/119884035 - Memperbaiki bug yang menyebabkan LiveData hasil Room mendapatkan pembersihan sampah memori saat diamati selamanya sehingga tidak lagi memberikan data baru. b/74477406
- Mengupdate close lock
RoomDatabaseuntuk 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; lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
Perubahan API
work-runtime-ktxmemperkenalkanCoroutineWorkerbaru.WorkStatusdiganti namanya menjadiWorkInfo. Semua varian metodegetStatusyang sesuai telah diganti namanya menjadi variangetWorkInfoyang sesuai. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStopped()tidak lagi menerima argumen boolean jikaWorkRequestdibatalkan.WorkManagertidak lagi membuat pembedaan ini. Perubahan ini dapat menyebabkan gangguan.- Paket
androidx.work.testtelah diganti namanya menjadi paketandroidx.work.testing. Perubahan ini dapat menyebabkan gangguan. - Penyetel di
Constraintstidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan. WorkerParameters.getTriggeredContentUris()danWorkerParameters.getTriggeredContentAuthorities()sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStartWork()diganti namanya menjadiListenableWorker.startWork(). Perubahan ini dapat menyebabkan gangguan.- Konstruktor untuk
WorkStatustidak lagi menjadi bagian dari API publik. Perubahan ini dapat menyebabkan gangguan. Configuration.getMaxJobSchedulerID()danConfiguration.getMinJobSchedulerID()secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()danConfiguration.getMaxJobSchedulerId(). Perubahan ini dapat menyebabkan gangguan.- Menambahkan banyak anotasi
@NonNullke API publik untuk meningkatkan ergonomi API. - Menambahkan
WorkManager.enqueueUniqueWork()API untuk mengantrekanOneTimeWorkRequestyang unik tanpa harus membuatWorkContinuation. - Semua varian metode
enqueuedancancelpadaWorkManagerkini menampilkan jenisOperationbaru. Perubahan ini dapat menyebabkan gangguan. - Semua varian
enqueuetidak lagi menerima vararg untukWorkRequest. Perubahan ini dapat menyebabkan gangguan. Sebagai gantinya, gunakan Collections. Anda dapat menggunakanArrays.asList()untuk mengubah kode yang sudah ada. Kami melakukan ini untuk mengurangi antarmuka API dan jumlah metode. - Mencoba untuk melakukan
initializepadaWorkManagerlebih dari sekali per proses kini akan menampilkanIllegalStateException. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builderdalam artefakwork-runtime-ktxkini menggunakanListenableWorker. Perbaikan b/117666259- Pastikan waktu percobaan berikutnya untuk
PeriodicWorkditetapkan ke masa mendatang. Perbaikan b/118204399 - Menghapus disk I/O potensial ketika menggunakan WorkManager saat memulai aplikasi. Perbaikan b/117796731
- Memperbaiki kondisi race di
WorkConstraintsTracker. Memperbaiki android-workmanager/issues/56
Perubahan API yang Dapat Menyebabkan Gangguan
WorkStatusdiganti namanya menjadiWorkInfo. Semua varian metodegetStatusyang sesuai telah diganti namanya menjadi variangetWorkInfoyang sesuai.ListenableWorker.onStopped()tidak lagi menerima argumen boolean jikaWorkRequestdibatalkan.WorkManagertidak lagi membuat pembedaan ini.- Paket
androidx.work.testtelah diganti namanya menjadi paketandroidx.work.testing. - Penyetel di
Constraintstidak lagi menjadi bagian dari API publik. WorkerParameters.getTriggeredContentUris()danWorkerParameters.getTriggeredContentAuthorities()sebelumnya menampilkan array. Sekarang, metode ini menampilkan Collections.ListenableWorker.onStartWork()diganti namanya menjadiListenableWorker.startWork().- Konstruktor untuk
WorkStatustidak lagi menjadi bagian dari API publik. Configuration.getMaxJobSchedulerID()danConfiguration.getMinJobSchedulerID()secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()danConfiguration.getMaxJobSchedulerId().- Semua varian metode
enqueuedancanceldiWorkManagersekarang menampilkan jenisOperationbaru. - Semua varian
enqueuetidak lagi menerima vararg untukWorkRequest. - Mencoba untuk melakukan
initializeWorkManagerlebih dari sekali per proses kini akan menampilkanIllegalStateException.
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
@DatabaseViewdalam@Relation. b/117680932
Perbaikan Bug
- Memperbaiki bug yang menyebabkan Room menjalankan I/O disk di thread utama saat berlangganan dan berhenti berlangganan jenis nilai Rx yang ditampilkan. b/117201279
- Memperbaiki bug yang menyebabkan Room gagal menemukan pengonversi jenis yang sesuai untuk kolom dalam class entity Kotlin. b/111404868
- Memperbaiki bug yang menyebabkan Room menghasilkan kode yang salah untuk implementasi antarmuka
DAOyang 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
Navigation 1.0.0-alpha07 dirilis dengan perbaikan bug dan perubahan API.
Fitur Baru
- Class AppBarConfiguration baru memungkinkan Anda menyesuaikan tujuan yang dianggap sebagai tujuan tingkat teratas. Baca dokumentasi terbaru untuk mengetahui detailnya. b/117333663
- Sekarang Anda dapat meneruskan argumen ke tujuan awal grafik b/110300470
- Deep link kini mendukung skema kustom dengan titik, tanda hubung, dan tanda plus. b/112806402
Perubahan yang Dapat Menyebabkan Gangguan
- Modul
navigation-testing-ktxtelah dikemas ke dalamnavigation-testing artifactdan tidak akan dipublikasikan lagi. - Artefak
navigation-testingkini 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 dalam Java. - Grafik navigasi terdaftar manifes metadata tidak lagi didukung. b/118355937
- Tindakan tidak dapat lagi ditambahkan ke tujuan <activity>. aosp/785539
Perbaikan Bug
- Deep link kini akan mengurai parameter kueri dengan benar. b/110057514
- Tujuan Activity sekarang menerapkan semua animasi masuk dan keluar dengan benar. b/117145284
- Memperbaiki masalah yang terjadi setelah perubahan konfigurasi saat menggunakan Navigator kustom. b/110763345
Safe Args
- Safe Args sekarang memiliki dependensi tetap pada Plugin Android Gradle 3.2.1. b/113167627
- Directions kini dapat dibuat untuk class internal. 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
- Penambahan
PagedList.Config.Builder.setMaxSize()untuk membatasi jumlah item yang dimuat dalam memori. - Penambahan
androidx.paging.Config()sebagai alternatif Kotlin untukPagedList.Config.Builder - Penambahan
androidx.paging.PagedList()sebagai alternatif Kotlin untukPagedList.Builder - Penambahan
DataSourceFactory.toLiveData()sebagai alternatif Kotlin untukLivePagedListBuilder - Penambahan
DataSourceFactory.toObservable()dantoFlowable()sebagai alternatif Kotlin untukRxPagedListBuilder - Penambahan
AsyncPagedListDiffer.addPagedListListener()untuk memantau kapan PagedList ditukar. b/111698609 - Penambahan varian
PagedListAdapter.onCurrentListChanged()yang meneruskan daftar lama dan baru; varian sebelumnya tidak digunakan lagi. - Penambahan 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 - Penambahan
PagedList.getLoadedCount()untuk memberitahukan jumlah 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 menampilkanIndexOutOfBoundsExceptionjika indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.- Memperbaiki masalah ketika ukuran pemuatan awal yang sangat kecil dan data yang tidak berubah berpotensi menghentikan 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; 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 issue tracker kami.
Perubahan API
- Menghapus semua metode dan class yang sebelumnya
deprecated, terutama konstruktorWorkerdefault. Perubahan API ini dapat menyebabkan gangguan. - Mengganti nama
NonBlockingWorkermenjadiListenableWorker, yang sekarang merupakan class publik yang tidak tersembunyi dan siap digunakan.ListenableWorkermenyediakan 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 mengupdateListenableFuturesesuai hasilnya. Penerapan referensiListenableFuturedisediakan dalam paketFuturesdialpha02(lihat di bawah pada bagianWorkManager).WorkermemperluasListenableWorkerdan masih beroperasi seperti sebelumnya, dengan metodeResult doWork()abstrak.- Mengacak beberapa metode dan anggota dari
WorkerkeListenableWorker. - Kami akan segera menyediakan penerapan referensi untuk
ListenableWorkeryang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
- Antarmuka
WorkerFactorydan penerapan konkretDefaultWorkerFactorytelah digabungkan menjadi class abstrak yang disebutWorkerFactory. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instanceWorkerFactoryyang dibuat pengguna. Perubahan ini dapat menyebabkan gangguan. - Menghapus
WorkManager.synchronous()danWorkContinuation.synchronous()serta semua metode yang terkait. MenambahkanListenableFuture<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 menampilkanvoid, tetapi sekarang akan menampilkanListenableFuture<Void>. Anda dapat memanggilListenableFuture.addListener(Runnable, Executor)atauListenableFuture.get()untuk menjalankan kode setelah operasi selesai. - Perlu diketahui bahwa
ListenableFutureini 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 kontrakFuture. - Untuk mempertahankan kesamaan dengan metode
getStatus*sinkron, kami menyediakan varianListenableFuture, dan mengganti nama saat ini yang menampilkanLiveDataagar secara eksplisit memiliki "LiveData" sebagai bagian dari nama tersebut (misalnya,getStatusesByIdLiveData(UUID)). Perubahan API ini dapat menyebabkan gangguan.
- Anda kini dapat melakukan perolehan dan pengamatan secara sinkron menggunakan
Perbaikan Bug
- Memperbaiki masalah umum dari alpha09 terkait file
androidx-annotations.produplikat. Anda dapat menghilangkan solusi ini dari catatan rilis sebelumnya dengan menghapusexclude 'META-INF/proguard/androidx-annotations.pro'dari file gradle. - Menambahkan konfigurasi proguard untuk mempertahankan konstruktor
Workerbaru. b/116296569 - Memperbaiki potensi
NullPointerExceptiondalam kondisi race saatREPLACEdilakukan pada pekerjaan. b/116253486 dan b/116677275 WorkContinuation.combine()sekarang menerima satuWorkContinuationatau lebih, bukan dua atau lebih. b/117266752
Perubahan API yang Dapat Menyebabkan Gangguan
- Menghapus semua metode dan class yang sebelumnya
deprecated, terutama konstruktorWorkerdefault. - Antarmuka
WorkerFactorydan penerapan konkretDefaultWorkerFactorytelah digabungkan menjadi class abstrak yang disebutWorkerFactory. - Menghapus
WorkManager.synchronous()danWorkContinuation.synchronous(). - Metode
WorkManager.getStatus*()sekarang menampilkanListenableFuture.WorkManager.getStatus*LiveData()menampilkanLiveData.
Futures
Futures 1.0.0-alpha02 dirilis.
Perubahan API
- Developer kini dapat menggunakan
ResolvableFuturedanAbstractResolvableFuturesebagai implementasi ringan dan konkret dariListenableFuture.
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
@Entitysekarang juga dapat dianotasi dengan@Fts3atau@Fts4untuk 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@Relationsekarang dapat dideklarasikan dalam metode abstrak milik class yang dianotasikan nilai otomatis. Pastikan anotasi ini juga harus disertai dengan@CopyAnnotationsagar Room dapat memahaminya dengan baik. b/62408420 - Dukungan Tambahan untuk Jenis Nilai yang Ditampilkan RX: Metode DAO yang dianotasi dengan
@Insert,@Delete, atau@Updatesekarang mendukung jenis nilai yang ditampilkan RxCompletable,Single<T>, danMaybe<T>. b/63317956 - Jenis yang Tidak Dapat Diubah dengan
@Relation: Sebelumnya, Room memerlukan kolom beranotasi@Relationdapat disetel, tetapi sekarang kolom tersebut dapat berupa parameter konstruktor. enableMultiInstanceInvalidation: Adalah API baru diRoomDatabase.Builderuntuk mengaktifkan pembatalan di berbagai instance RoomDatabase yang menggunakan file database yang sama. Mekanisme pembatalan multi-instance ini juga berlaku pada banyak proses. b/62334005fallbackToDestructiveMigrationOnDowngrade: Adalah API baru diRoomDatabase.Builderuntuk otomatis membuat ulang database jika terjadi downgrade. b/110416954ignoredColumns: Adalah API baru dalam anotasi@Entityyang dapat digunakan untuk membuat daftar kolom yang diabaikan menurut namanya. Berguna untuk mengabaikan kolom turunan pada suatu entity. b/63522075
Perubahan API/Perilaku
mCallbackdanmDatabasediRoomDatabasesekarang@Deprecateddan akan dihapus pada Room versi utama mendatang. b/76109329
Perbaikan Bug
- Memperbaiki dua masalah saat 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
PositionalDataSourcedan 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
Navigation 1.0.0-alpha06 dirilis dengan perbaikan bug dan perubahan API.
Fitur Baru
- Transisi Elemen Bersama untuk tujuan Fragment dan Activity sekarang didukung b/79665225. Untuk informasi selengkapnya, lihat Mengimplementasikan navigasi dengan Komponen Arsitektur Navigation
- Memilih item di
NavigationViewsekarang akan menutup semua yang berisi sheet bawah b/112158843
Perubahan API
- Perubahan yang Dapat Menyebabkan Gangguan: Metode
navigate()Navigator kini menggunakan parameterNavigator.Extras. - Metode
getGraph()NavController sekarang adalahNonNullb/112243286
Perbaikan Bug
NavigationUI.setupWithNavController()tidak lagi membocorkan tampilan jika digunakan dengan tampilan dari tujuan individu b/111961977onSaveState()navigator sekarang hanya dipanggil satu kali b/112627079
Safe Args
- 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 jalur independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
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)keWorkeryang mendasarinya. b/114125093 - Menerapkan penundaan backoff minimum yang benar untuk Firebase JobDispatcher. b/113304626
- Meningkatkan jaminan threading internal ke library.
- Memperbaiki potensi masalah dengan de-duplikasi
LiveDatasecara internal.
Perubahan API
- Anda kini dapat membuat instance
Workersendiri pada runtime dengan menetapkanWorkerFactorysebagai bagian dariWorkManager.Configuration. Factory untuk fallback adalahDefaultWorkerFactory, yang cocok dengan perilaku WorkManager versi sebelumnya.- Konstruktor default untuk
WorkerdanNonBlockingWorkerkini ditandai sebagai tidak digunakan lagi. Harap gunakan konstruktor baru (Worker(Context, WorkerParameters)) dan panggilsuper(Context, WorkerParameters); versi WorkManager berikutnya akan menghapus konstruktor default tersebut.
- Konstruktor default untuk
- Kami sudah mulai menggunakan artefak
ListenableFutureyang baru secara internal (bebas dari dependensi Guava). Kami akan memperkenalkan ListenableFutures ke API dalam rilis mendatang. Perubahan ini akan mendukung proses diperlihatkannyaNonBlockingWorker. - Menambahkan kemampuan untuk memicu pekerjaan yang dibatasi waktu di
TestDrivermelaluiTestDriver.setInitialDelayMet(UUID)danTestDriver.setPeriodDelayMet(UUID). b/113360060
Perubahan yang Dapat Menyebabkan Gangguan
- Konstruktor default
WorkerdanNonBlockingWorkersudah 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 peka terhadap booting langsung. b/112665532
- Memperbaiki masalah saat 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
Datauntuk menunjukkan batas sebesar 10 KB. - Menurunkan nilai maksimum
Configuration.setMaxSchedulerLimit(int)menjadi 50 untuk memperhitungkan latensi dalam penyelesaian pemrosesanJobScheduler. 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 menampilkan 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
JobSchedulerterlampaui. b/111569265 - Memperbaiki
ConcurrentModificationExceptiondalamConstraintTracker. b/112272753 - Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)danData.getIntArray(String)menjadi@Nullable, bukan@NonNull. b/112275229
Perubahan API
Workersekarang memperluas class baru,NonBlockingWorker. Perubahan ini tidak memengaruhi penggunaan saat ini. Di masa mendatang,NonBlockingWorkerakan menjadi entity yang sepenuhnya didukung untuk solusi threading kustom.- Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)danData.getIntArray(String)menjadi@Nullable, bukan@NonNull. b/112275229 - Ekstensi Kotlin: menghentikan
Map.toWorkData()dan menambahkanworkDataOf(vararg Pair<String, Any?>)level teratas agar lebih konsisten dengan API yang ada.
10 Agustus 2018
Navigation
Navigation 1.0.0-alpha05 dirilis dengan perbaikan bug.
Perbaikan Bug
- Memperbaiki bug yang menyebabkan perilaku data sebelumnya yang salah. b/111907708
- Memperbaiki bug di
equals()class Generated Args. b/111450897 - Memperbaiki kegagalan pembuatan di Safe Args. b/109409713
- Memperbaiki konversi dari pengenal 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
PeriodicWorktidak berjalan sesuai jadwal dalam mode Istirahatkan. b/111469837 - Memperbaiki kondisi race saat melacak batasan yang menyebabkan
WorkManagermengalami error. googlecodelabs/android-workmanager/issues/56 - Membuat
WorkRequestyang unik saat menggunakanWorkRequest.Builder#build(). b/111408337 - Mengaktifkan penggunaan
RescheduleReceiverhanya jika adaWorkRequestyang 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. Namun, jika singleton tidak diinisialisasi dengan benar dalam kasus inisialisasi manual, metode ini akan menampilkanIllegalStateException. Ini adalah perubahan API yang dapat menyebabkan gangguan.- Menambahkan API baru,
Configuration.Builder.setMinimumLoggingLevel(int), yang dapat mengontrol panjang WorkManager. Secara default, WorkManager mencatatLog.INFOdan di atasnya. - Mengubah tanda tangan
Data.getString()sehingga tidak lagi menggunakan nilai default (secara implisit adalahnull). Perubahan API ini dapat menyebabkan gangguan. - Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai
@hide. Proses ini mencakup konstruktorConstraints,Data.toByteArray(), danData.fromByteArray(byte[]). Perubahan API ini dapat menyebabkan gangguan.
Perbaikan Bug
- WorkManager tidak lagi menjalankan pekerjaan selama kasus pencadangan otomatis yang diketahui. Ini dapat mengakibatkan error. b/110564377
- Memperbaiki penjadwalan ganda
PeriodicWorkRequestsaat menggunakanJobScheduler. b/110798652 - Memperbaiki masalah
PeriodicWorkRequestyang 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
BroadcastReceiveryang tidak diperlukan lagi dengan benar. - Mengoptimalkan performa penjadwalan ulang saat aplikasi memulai ulang setelah ditutup paksa.
- Mengizinkan
TestScheduler.setAllConstraintsMet(UUID)untuk dipanggil sebelum atau sesudah mengantrekanWorkRequestyang 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 adalahnull). - Menandai beberapa metode yang hanya diperlukan untuk penggunaan internal sebagai
@hide. Proses ini mencakup konstruktorConstraints,Data.toByteArray(), danData.fromByteArray(byte[]).
19 Juli 2018
Navigation
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 mengatur Fragment saat ini sebagai fragmen navigasi utama, memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778
Safe Args
- Perubahan yang Dapat Menyebabkan Gangguan:
app:typetelah diubah menjadiapp:argTypeuntuk 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
NonNullsebenarnya bukan null. b/111451769 - Anotasi
NonNulltambahan telah ditambahkan ke NavDirections dan class yang dihasilkan Args 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
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 nilai salah ketika data sebelumnya kosong atau ketika ID tujuan yang diberikan 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 Args
- Perubahan yang Dapat Menyebabkan Gangguan: Karakter non-alfanumerik dalam nama tindakan dan argumen akan diganti dengan CamelCase dalam nama metode NavDirections masing-masing
- Misalnya
DemoController.indexakan menjadisetDemoControllerIndexb/79995048 - Misalnya
action_show_settingsakan menjadiactionShowSettingsb/79642240
- Misalnya
- 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()danhashCode()b/79642246 - Plugin Safe Args kini dapat diterapkan ke project library. b/80036553
- Plugin Safe Args kini 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 bertingkat beberapa kali b/110178671
- Memperbaiki masalah saat menggunakan
setPopUpTodengan tujuan pertama dalam grafik b/109909461 - Memperbaiki masalah saat semua nilai
app:defaultValuediteruskan sebagai String b/110710788 - aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 kini menambahkan aturan keep untuk setiap atribut
android:namedalam 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 menyimpan 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
ObservableRxJava2 - 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 prepend (placeholder dinonaktifkan, PositionalDataSource) b/80149146
- (Sudah dirilis dalam
1.0.1) Memperbaiki error ketikaPagedListAdapterdanAsyncPagedListDiffergagal 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 demi stabilitas. Paging RxJava2 1.0.1 juga dirilis, dan identik dengan 1.0.0-rc1.
Perbaikan Bug
- Memperbaiki error ketika
PagedListAdapterdanAsyncPagedListDiffergagal menandai peristiwa pemindahan. b/110711937
WorkManager
WorkManager 1.0.0-alpha04 dirilis.
Perbaikan Bug
PeriodicWorkRequestkini dijadwalkan ulang dengan benar saat menggunakan implementasi berbasisAlarmManager.Memperbaiki potensi ANR saat menjadwal ulang semua pekerja setelah penghentian paksa atau memulai ulang. 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 implementasi berbasis
AlarmManager. b/80346526.Memperbaiki tugas duplikat saat menggunakan
JobSchedulersetelah reboot perangkat.Pekerjaan dengan pemicu URI Konten sekarang bertahan dari 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
Roomversi1.1.1-rc1.
Perubahan API
Menambahkan
getStatusesSync(), versi sinkron dariWorkContinuation.getStatuses().Workermemiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi.Worker.isStopped()akan menampilkantruejika penghentian jenis apa pun diminta.Worker.isCancelled()akan menampilkantruejika pekerjaan dibatalkan secara eksplisit. b/79632247Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Dukungan ini akan melalui
Worker.getNetwork().Menambahkan
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)sehingga Anda dapat memberlakukan jumlah pekerjaan yang dapat dikirim keJobScheduleratauAlarmManager. Dengan demikian,WorkManagertidak akan menggunakan semua slotJobScheduleryang tersedia.Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)yang membantu menentukan rentang ID pekerjaanJobScheduleryang aman untuk digunakan olehWorkManager. b/79996760Worker.getRunAttemptCount()menampilkan jumlah percobaan saat ini untukWorkertertentu. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)memungkinkan Anda mengantrekanPeriodicWorkRequestunik. b/79600647WorkManager.cancelAllWork()membatalkan semuaWorker. Library yang bergantung padaWorkManagerdapat menanyakan kapan kali terakhir metode ini dipanggil menggunakanWorkManager.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 untukWorker. Hal ini memungkinkan Anda menghapusWorkRequesttanpatagatau saatidtidak tersedia. b/109572351
Perubahan yang Dapat Menyebabkan Gangguan
Mengganti nama
Worker.WorkerResultmenjadiWorker.Result.Worker.onStoppedkini memiliki parameterisCancelledtambahan yang ditetapkan ketruesaatWorkerdibatalkan secara eksplisit.
7 Juni 2018
Navigation 1.0.0-alpha02 dirilis.
Navigation
Perubahan Perilaku
FragmentNavigatorsekarang menggunakansetReorderingAllowed(true). b/109826220Navigation sekarang meng-URLDecode argumen yang diurai dari URL deep link. b/79982454
Perbaikan Bug
Memperbaiki
IllegalStateExceptionsaat memanggil navigasi dari metode siklus proses Fragment. b/79632233Navigation sekarang bergantung pada Support Library 27.1.1 untuk memperbaiki kedipan saat menggunakan animasi. b/80160903
Memperbaiki
IllegalArgumentExceptionsaat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847Memperbaiki
StackOverflowErrorsaat menggunakan NavDeepLinkBuilder. b/109653065Memperbaiki
IllegalArgumentExceptionsaat menavigasi kembali ke grafik bertingkat. b/80453447Memperbaiki masalah Fragment yang tumpang-tindih saat menggunakan
launchSingleTop. b/79407969Navigation sekarang membuat data sebelumnya yang benar dan bersifat sintetis untuk grafik bertingkat. b/79734195
NavigationUI kini akan menyorot item yang benar saat grafik bertingkat digunakan sebagai
MenuItem. b/109675998
Perubahan API
Atribut
clearTaskuntuk tindakan dan API terkaitnya diNavOptionstidak digunakan lagi. b/80338878Atribut
launchDocumentuntuk tindakan dan API terkaitnya diNavOptionstidak digunakan lagi. b/109806636
24 Mei 2018
WorkManager 1.0.0-alpha02 dirilis.
WorkManager
Perbaikan Bug
Memperbaiki
NullPointerExceptionpadaState.isFinished(). b/79550068Memperbaiki masalah yang menyebabkan
Workerdijadwalkan ulang padaApplication.onCreate(). b/79660657Memperbaiki masalah ketika Anda dapat menjadwalkan lebih banyak pekerjaan dari yang diizinkan oleh OS. b/79497378
Mengalihkan pembersihan penguncian layar saat aktif yang terkait dengan
Workerke thread latar belakang.Implementasi
AlarmManagerkini melakukan pembersihan dengan benar saat semua pekerjaan yang tertunda selesai.Memperbaiki kueri SQL pembersihan yang memengaruhi lokalitas selain Inggris. b/80065360
Menambahkan dukungan untuk
floatdiData. b/79443878Data.Builder.putAll()kini menampilkan instanceBuilder. b/79699162Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663
Perubahan API
Workerdapat bereaksi saat dihentikan.Worker.isStopped()dapat digunakan untuk memeriksa apakahWorkertelah dihentikan.Worker.onStopped()dapat digunakan untuk melakukan operasi pembersihan ringan.Worker.getTags()API menampilkanSettag yang terkait denganWorker.Menambahkan overload
javax.time.Durationuntuk API yang menggunakan kombinasi durasi danTimeUnit. Ini dilindungi oleh@RequiresApi(26).Ekstensi
WorkManagertelah dipindahkan dari paketandroidx.work.ktxke paketandroidx.work. Ekstensi lama tidak lagi digunakan dan akan dihapus dalam versi yang akan datang.Configuration.withExecutor()tidak digunakan lagi. GunakanConfiguration.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 akan menangani inisialisasi migrasi post 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 1.0.0 dan Room 1.1.0 dirilis, bersama
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 mematuhi batas. Rilis awalnya 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 berdasarkan versi 2.0.0-alpha1 untuk digunakan bersama dengan
Library AndroidX.
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-rc1dirilis.
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. Harap upgrade project untuk menggunakan 1.0.0-rc1 dan
bantu kami melakukan uji banding agar dapat merilis 1.0.0 yang sempurna.
Tidak ada perubahan dalam rilis ini, semuanya sama dengan versi 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 versi beta untuk waktu singkat sebelum menjadi kandidat rilis.
Tidak ada rencana perubahan API lebih lanjut untuk Paging 1.0, dan standar untuk setiap perubahan API sangatlah 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, menggunakan Scheduler, bukannya 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
RxPagedListBuilderditambahkan melalui artefakandroid.arch.paging:rxjava2baru.
Perubahan API
Perubahan API untuk memperjelas peran eksekutor dalam builder:
Mengganti nama
setBackgroundThreadExecutor()menjadisetFetchExecutor()(dalamPagedList.BuilderdanLivePagedListBuilder)Mengganti nama
setMainThreadExecutor()menjadisetNotifyExecutor()(dalamPagedList.Builder).
Memperbaiki anggota
PagedList.mCallbacksmenjadi pribadi.
Perbaikan Bug
LivePagedListBuildermemicu pemuatanPagedListawal pada eksekutor yang ditentukan, bukannya kumpulan thread IO Komponen Arch.Perbaikan perilaku pembatalan validasi dalam wrapper
DataSourceinternal (yang digunakan untuk mengimplementasikanDataSource.map, serta pemuatanPositionalDataSourceyang dinonaktifkan placeholder). b/77237534
Room
Perbaikan Bug
Memperbaiki bug penting dalam implementasi
SingledanMaybeRx Room saat kueri didaur ulang lebih awal, sehingga terjadi masalah jika Anda menambahkan lebih dari 1 observer ke instanceSingleatauMaybeyang ditampilkan. b/76031240RoomDatabase.clearAllTables tidak akan melakukan
VACUUMdatabase 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
- Berdasarkan masukan Ulasan API,
@RawQuerytidak lagi menerima penerusanStringsebagai parameter kueri. Anda harus menggunakan SupportSQLiteQuery. (lihat SimpleSQLiteQuery untuk membuat instance SupportSQLiteQuery yang dilengkapi dukungan argumen dengan mudah). - Metode fallbackToDestructiveMigrationFrom RoomDatabase.Builder sekarang menerima
vararg intsebagai penggantivararg Integer.
Perbaikan Bug
RoomDatabase.clearAllTables kini mencoba mengembalikan ruang ke sistem operasi dengan menyetel checkpoint WAL dan melakukan
VACUUMdatabase.@RawQuerysekarang menerima Pojo apa pun untuk propertiobservedEntitiesselama Pojo tersebut mereferensikan ke satu atau beberapa entity melalui kolomEmbeddedatauRelationmiliknya. b/74041772Paging: Implementasi DataSource Room sekarang menangani dependensi multi-tabel dengan benar (seperti relasi dan gabungan). Sebelumnya penanganan tersebut akan gagal memicu hasil baru, atau dapat gagal mengompilasi. b/74128314
Lifecycles
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 memperbarui 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.LoadParamssekarang memiliki konstruktor publik dan objekDataSource.LoadCallbacksekarang abstrak. Perubahan ini memungkinkan penggabunganDataSourceatau pengujianDataSourcesecara langsung dengan callback palsu. b/72600421 - Mapper untuk DataSource dan DataSource.Factory
map(Function<IN,OUT>)memungkinkan Anda mengubah, menggabungkan, atau mendekorasi hasil yang dimuatDataSource.mapByPage(<List<IN>,List<OUT>>)memungkinkan tindakan yang sama untuk batch processing (misalnya, jika item yang dimuat dari SQL harus mengkueri database terpisah, hal tersebut dapat dilakukan sebagai batch.)
PagedList#getDataSource()ditambahkan sebagai metode yang mempermudah pekerjaan b/72611341- Semua class yang tidak digunakan lagi telah dihapus dari API, termasuk sisa-sisa paket
recyclerview.extensionsdanLivePagedListProvider. DataSource.Factorydiubah dari antarmuka menjadi class abstrak guna memungkinkan fungsi peta.
Perbaikan Bug
- Mengubah Builder menjadi final. b/70848565
- Perbaikan implementasi
DataSourceRoom untuk menangani kueri multitabel. Perbaikan ini disertakan dalam Room 1.1.0-beta1, lihat di atas. - Perbaikan bug yang menyebabkan
BoundaryCallback.onItemAtEndLoadedtidak dipanggil untukPositionalDataSourcejika placeholder diaktifkan dan ukuran total merupakan kelipatan persis 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
addObserverdanremoveObserverdi InvalidationTracker sekarang sinkron dan perlu dipanggil pada non-UI thread. Perubahan ini mencegah beberapa kondisi race saat mengamati tabel.Ada metode
clearAllTables()baru di class RoomDatabase yang akan memotong semua isi tabel. b/63807999SupportSQLiteQuerysekarang memiliki metodegetArgCount()yang akan menampilkan jumlah parameter kueri. b/67038952
Perbaikan Bug
@RawQuerysekarang didukung dengan benar untuk kueri Paging. b/72600425Room kini dengan benar menamai class
Daoyang dihasilkan untuk menghindari konflik nama saat 2 atau beberapa antarmukaDaomerupakan class dalam di paket yang sama dan memiliki nama yang sama. b/73536380Jenis kolom generik di
Pojodiurai dengan benar sebagai anggota class yang diperluas. b/73534868Parameter kueri dalam antarmuka
Daoyang diwarisi dari artefak dependensi sekarang diurai dengan benar. b/68118746Kueri yang dihasilkan untuk
@Relationsekarang 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->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->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-alpha6dancom.android.support:recyclerview-v7:27.1.0- ini harus dilakukan secara bersamaan, selagi ListAdapter dipindahkan dari Paging ke RecyclerView
- Perbarui referensi
ListAdapterHelperapa pun keAsyncListDiffergetItem(index)/getItemCount()dihapus dan diganti dengan pola pemanggilangetCurrentList().getItem(index)dangetCurrentList().size()yang lebih eksplisit.
- Perbarui semua referensi
ListAdapterConfigkeAsyncDifferConfig - Perbarui semua referensi
DiffCallbackkeDiffUtil.IttemCallback - Perbarui semua referensi
PagedListAdapterHelperkeAsyncPagedListDiffer - Perbarui referensi
setList()kesubmitList()- mengganti 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, 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 perangkat menjalankan
API 16atau yang lebih baru dan bukan merupakan perangkat dengan memori rendah. Anda dapat mengontrol perilaku ini menggunakan metodesetJournalMode()padaRoomDatabase.Builder. b/67757002Dukungan Guava: Room kini mendukung ditampilkannya
Optional<T>atauListenableFuture<T>Guava dalam kueriDAO. Untuk menggunakanListenableFuture<T>, Anda perlu mengimpor artefakguavadari Room (android.arch.persistence.room:guava:1.1.0-alpha2).Room kini mendukung ditampilkannya
java.util.Optional<T>dari kueriDAO.Metode antarmuka dengan implementasi default kini didukung dalam metode
@Transactiondi classDAO. Ini berfungsi baik untukJava 8maupunKotlin. b/72416735
Perbaikan Bug
Konstruktor dengan
@Relationtidak akan menyebabkan error kompilasi jika ada konstruktor lain yang dapat digunakan. b/72884434Nama tabel yang di-escape dengan
'dalam metode@Querysekarang di-escape dengan benar untuk pelacak pembatalan. b/72366965Room kini menggunakan anotasi
@MetadataKotlin untuk membaca struktur class selama pemrosesan anotasi. Ini berarti, meskipun pojo diwarisi dari dependensi, nama parameter konstruktor-nya dapat dibaca dengan benar. b/67181813Masalah 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
Room sekarang menangani kolom
boolean?yang ada di class 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.0android.arch.lifecycle:viewmodel:1.1.0
Perubahan API
LifecycleActivitydanLifecycleFragmentyang sudah tidak digunakan lagi sekarang telah dihapus. Harap gunakanFragmentActivity,AppCompatActivity, atau dukungFragment.- Anotasi
@NonNulltelah ditambahkan keViewModelProvidersdanViewModelStores - Konstruktor
ViewModelProviderstidak digunakan lagi. Harap gunakan metode statisnya secara langsung ViewModelProviders.DefaultFactorytidak digunakan lagi - harap gunakanViewModelProvider.AndroidViewModelFactory- Metode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)statis telah ditambahkan untuk mengambilFactorystatis yang cocok untuk membuat instanceViewModeldanAndroidViewModel.
Room 1.1.0-alpha1
Fitur Baru
RawQuery: API baru ini memungkinkan metode@Daomenerima SQL sebagai parameter kueri b/62103290, b/71458963fallBackToDestructiveMigrationsFrom: API baru diRoomDatabase.Builderini 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
LivePagedListProvideryang tidak digunakan lagi. Untuk menggunakan Room alfa baru, Anda harus menggunakan pagingalpha-4atau yang lebih tinggi, dan beralih dariLivePagedListProviderkeLivePagedListBuilderjika 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
- Jangan periksa apakah terdapat sumber data yang tidak valid pada parameter callback. b/70353706, b/70360195
7 Desember 2017
Paging alpha4 dirilis, dengan perubahan dan penambahan signifikan, yang sebagian besar
menargetkan jaringan, dan kasus penggunaan jaringan + database.
Perubahan API
DataSourcesekarang 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
PagedListyang didukung jaringan tunggal di UI thread. - Perilaku error di sekitar parameter pemuatan awal lebih jelas
TiledDataSourcediganti namanya menjadiPositionalDataSourceuntuk mencerminkan pengindeksan berbasis posisi dan fakta bahwa susunan pengindeksan tidak berubah saat placeholder dinonaktifkan.PageKeyedDataSourceditambahkan untuk mendukung token berikutnya/sebelumnya yang disematkan pada pemuatan halaman jaringan.KeyedDataSourcediganti namanya menjadiItemKeyedDataSourceagar perbedaannya jelas.LivePagedListBuilderdanDataSource.FactorymenggantikanLivePagedListProvider. Builder menyediakan kemampuan yang sama dengan lebih banyak penyesuaian dan default yang lebih sederhana. Factory mengizinkan kode pembuatanDataSourceuntuk tetap independen dariLiveData.PagedList.BoundaryCallbackditambahkan untuk kasus penggunaan database + jaringan.Konstruktor
PagedList.BuildermengambilDataSource+PagedList.Config, sehingga sekarang lebih mirip denganLivePagedListBuilder, dan mengizinkan operator diamond dalam bahasa Java, atau jenis yang ditentukan dalam Kotlin.PagedList.getConfig()ditambahkan, danPagedList.Configsekarang memiliki properti anggota publik.KeyedDataSource.loadBefore()tidak lagi berharap hasil akan dibalik.PagedListAdapter.onCurrentListChanged()ditambahkan untuk memproses update tentang PagedList 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
LiveDataReactiveStreamskini mengimplementasikan spesifikasi Reactive Streams dengan benar. b/67999342
Kandidat Rilis - 18 Oktober 2017
Semua artefak utama (kecuali Paging) sekarang versi 1.0.0-rc1.
Tidak ada masalah umum atau fitur baru lainnya yang dijadwalkan untuk
rilis 1.0.0. Harap upgrade project Anda untuk menggunakan 1.0.0-rc1 dan bantu kami
melakukan uji banding agar dapat merilis 1.0.0 yang sempurna.
Perubahan Perilaku
- Dengan rilis ini,
Lifecycle.Event#ON_STOPsekarang dikirim jikaonSaveInstanceStatedipanggil (sebelumnya, hanya ditandai sebagaiCREATEDtanpa mengirimON_STOP). Anda dapat membaca selengkapnya di dokumentasi Lifecycles.
Perbaikan Bug
Room:
- Room sekarang bergantung pada artefak xerial terbaru yang memperbaiki masalah
OutOfMemoryselama kompilasi. b/62473121 - Metode
Querysekarang dapat dianotasi dengan@Transaction. Untuk mengetahui detailnya, lihat dokumen referensi di@Transaction. b/65112315 - Class
StringUtildi Room dihapus dari API publik (tidak pernah dimaksudkan sebagai API publik).
- Room sekarang bergantung pada artefak xerial terbaru yang memperbaiki masalah
Lifecycles:
LiveDataberfungsi dengan baik saat Activity dicakup sebagian di API < 24. b/65665621Metode
OnLifecycleEventdi class induk kini dipanggil dengan benar, atau peringatan dicetak selama kompilasi jika tidak memungkinkan. b/63474615Lifecycle sekarang menyimpan
WeakReferencekembali ke LifecycleOwner untuk menghindari kebocoran LifecycleOwner jika Siklus proses disimpan dalam memori lebih lama dari biasanya (ini hanya tindakan pencegahan, Anda harus tetap berhati-hati untuk tidak membocorkanLifecycle).
9 Oktober 2017
Paging alpha-3 dirilis; yang membuatnya kompatibel dengan rilis beta 2 Lifecycles dan Room.
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
Lifecycles:
LiveDataReactiveStreamssekarang berhenti berlangganan dengan benar dari penayang sumber saatLiveDatatidak 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 saat pembuatan langganan berlangsung. b/66337741
FullLifecycleObserveruntuk artefak Bahasa Java 8 kini tersedia di hierarki dependensi. b/66525578Untuk 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
@Querymemiliki kolom@NonNullyang tidak cocok dengan kolom mana pun dalam respons kueri. Jika kolom adalah@Nullable, Room hanya akan mencetak peringatan. b/67115337 - Room sekarang memvalidasi indeks dalam versi OS yang lebih baru. b/63132683
- Room memilih konstruktor no-arg secara default jika ada beberapa konstruktor yang cocok dalam Pojo. b/67353427
- Kunci utama kolom tunggal dapat menjadi
Nullablejika kunci tersebut adalahIntegeratauLong. b/67086876 - Pelacak pembatalan menangani entri ulang dengan benar dalam mode uji coba. b/65471397
- Room sekarang memeriksa apakah ada karakter tidak valid dalam nama kolom dan
tabel pada waktu kompilasi (karakter tidak valid:
`,"). b/64749111
- Room sekarang mencetak error pada waktu kompilasi saat Pojo yang ditampilkan dalam
metode
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 lainnya. Perubahan yang tidak terencana mungkin terjadi, tetapi
batasan untuk mengubah API apa pun sebelum 1.0.0 menjadi stabil sangat tinggi dan sangat kecil kemungkinan untuk terjadi.
- LifecycleActivity & LifecycleFragment akan dihapus sebelum
1.0.0menjadi stabil. Keduanya tidak diperlukan saat menggunakan Support Library26.1.0atau 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 Lifecycles (runtime, umum) dan Arch Core (umum). Kedua artefak ini
adalah versi
1.0.0sejak 13 September.
Artefak Baru
Lifecycles 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 menggunakan bahasa Java 8, Anda harus lebih memilih artefak ini daripada anotasi.- Karena adanya bug dalam
beta1, Anda perlu menambahkan dependensi eksplisit pada modulandroid.arch.lifecycle:common:1.0.1untuk menggunakan artefakcommon-java8yang baru. Masalah ini akan diperbaiki dalambeta2.
- Karena adanya bug dalam
Perubahan Paket
android.arch.persistence.room.dbtelah dipindahkan keandroid.arch.persistence.dbandroid.arch.persistence.room.db-impltelah dipindahkan dan diganti namanya menjadiandroid.arch.persistence.db-framework
Kedua artefak ini sudah menjadi dependensi di Room, jadi Anda tidak perlu mengubah apa pun di file build, kecuali jika langsung menggunakan keduanya.
Perubahan API
Room:
- Anotasi @ColumnInfo sekarang mendukung penyetelan kolasi pada kolom. b/62007004
- Kolom
transientkini diabaikan secara default, kecuali jika dianotasi dengan@ColumnInfo,@Embedded, atau@Relation. b/62600692 - Kunci Utama harus dianotasi dengan
@NonNull, kecuali jika otomatis dibuat. b/64292391- Perubahan ini mungkin memerlukan migrasi skema. Kami mohon maaf atas ketidaknyamanan ini.
- Menambahkan anotasi kemudahan baru (@Transaction) yang
menggantikan metode
DAOdan menjalankannya di dalam transaksi.
Database SQLite Dukungan:
- Perubahan API dalam konfigurasi database. b/65349673 b/65499876
Paging:
- Peningkatan dokumentasi Paging dengan lebih banyak contoh dan anotasi thread.
Perbaikan Bug
- Room:
- String multi-baris Kotlin dalam metode
@Queryditangani dengan benar. b/65809374
- String multi-baris Kotlin dalam metode
- Paging:
- Artefak Paging tidak lagi bergantung pada junit. b/65690261
1.0.0 Alfa 9-1 - 13 September 2017
Ini adalah rilis besar ketika 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. AppCompatActivity dan 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 bila diperlukan. Paging dirilis sebagai alpha1
dan akan memiliki siklus rilisnya sendiri.
Perubahan API
- Class berikut tidak lagi digunakan dan akan dihapus dalam rilis mendatang:
Perbaikan Bug
Class yang dihasilkan kini dianotasi dengan
@Generatedjika aplikasi memiliki anotasi di classpath. b/35754819Memperbaiki bug perbandingan observer MediatorLiveData. b/64413274
Kueri
WITHSQLite kini didukung dengan [LiveData]. [ref-LiveData] b/62510164Memperbaiki bug saat InvalidationTracker tidak akan mengirim daftar yang benar jika lebih dari 1 tabel diamati. b/65099281
Memperbaiki bug saat Room membuat file yang berbeda di Windows. b/64470691
LifecycleObservers dalam paket root kini didukung. b/62310817
1.0.0 Alfa 9 - 16 Agustus 2017
Perbaikan bug
- Memperbaiki bug di LiveData, yaitu Observer kedua diabaikan saat observer pertama dihapus dari metode
onChanged-nya. b/64285805
1.0.0 Alfa 8 - 1 Agustus 2017
Perubahan Perilaku
- Batasan
NOT NULLditambahkan untuk kolom jenis primitif atau kolom yang dianotasi dengan NonNull. Hal ini akan mengubah struktur tabel, jadi jika sudah menggunakan Komponen Arsitektur alfa 7 atau yang lebih lama, Anda perlu mengimplementasikan migrasi jika ingin mempertahankan datanya, atau menggunakan metodefallbackToDestructiveMigration()di builder. b/62007004
Perubahan API
- SupportSQLiteProgram sekarang memperluas AutoCloseable. b/63131997
1.0.0 Alfa 7 - 26 Juli 2017
Perbaikan bug
Memperbaiki bug penting dalam metode
removeObserverLifecycleRegistry, yang merusak penambahan ulang LifecycleObserver.Memperbaiki InvalidationTracker untuk database kustom b/63162311
1.0.0 Alfa 6 - 25 Juli 2017
Perubahan perilaku
Urutan panggilan LifecycleObserver telah diubah. Sebelumnya, observer selalu dipanggil sesuai urutan penambahannya: jika
observer1ditambahkan sebelumobserver2, maka observer tersebut akan menerimaON_CREATEdan semua peristiwa lain sebelumobserver2. Hal ini tidak lagi benar untuk peristiwa penghancuran, karena untuk peristiwa tersebut, observer dipanggil dalam urutan penambahan terbalik. Jadi, perilaku saat ini adalah: jikaobserver1ditambahkan sebelumobserver2, makaON_CREATEakan dikirim terlebih dahulu keobserver1, lalu keobserver2(begitu juga untukON_STARTdanON_RESUME), tetapi peristiwaON_PAUSEakan dikirim terlebih dahulu keobserver2dan baru setelah itu keobserver1(begitu juga untukON_STOPdanON_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()keRoomDatabase.Builderuntuk menghapus database jika migrasi tidak ada. b/63872392Komponen arsitektur sekarang bergantung pada Support Library 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
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
Menambahkan metode callback baru ke
RoomDatabase.Builderuntuk mengamati kapan database dibuat atau dibuka. b/62699324@Query sekarang dapat menampilkan RxJava
MaybeatauSingle. b/62231019
Anda harus bergantung pada artefak android.arch.persistence.room:rxjava2 untuk menambahkan dukungan RxJava ke Room.
Perbaikan bug
Memperbaiki kueri
@Deletetanpa parameter apa pun. b/63608092Memperbaiki pemeriksaan jenis Room untuk pengambil dan penyetel. b/63733651
1.0.0 Alfa 4 - 11 Juli 2017
Perubahan API
Menambahkan metode kenyamanan baru (
runInTransaction()) ke RoomDatabase.Metode
@Insert,@Delete, dan@Updatesekarang dapat memiliki parameter dari jenis entity berbeda. b/62682405
Perbaikan Bug
Memperbaiki penanganan
byte[]dalam metode@Dao. b/62460045Pemeriksaan 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
@OnLifecycleEventsekarang 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 beranotasi@OnLifecycleEvent(ON_ANY)yang dapat menerima parameter kedua dengan jenisEvent(parameter pertama adalahLifecycleOwner). Lihat dokumentasi Lifecycle untuk detailnya.Class
LifecycleActivitydanLifecycleFragmentdipindahkan ke dalam artefakandroid.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@Updatedalam metode@DAOsekarang dapat memiliki parameter dari jenisIterable. b/62259820
Perbaikan Bug
Metode yang diganti dengan peristiwa siklus proses tidak lagi dipanggil beberapa kali.
Beberapa parameter
INsekarang ditangani dengan benar. b/62608681Class DAO abstrak sekarang dapat memiliki konstruktor yang menerima instance
@Database. b/38488747DAOsekarang dapat memiliki class/antarmuka super dengan parameter jenis. b/62103620
1.0.0 Alfa 2 - 2 Juni 2017
Perubahan API
Callback InvalidationTracker kini menerima daftar nama tabel yang diubah. (b/38468740)
Mengurangi antarmuka API class SupportSQLiteDatabase. (b/38481640)
Perbaikan Bug
- File proguard untuk siklus proses. (b/62113696)
- Hilangnya data dengan Konverter Jenis. (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
FragmentdanActivityCompatLifecycle di Support Library belum mengimplementasikan antarmukaLifecycleOwner. Keduanya akan menerapkan antarmuka ketika Komponen Arsitektur mencapai versi 1.0.0.