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
ConcurrentModificationException
di 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
LiveData
yang digunakan WorkManager. - Beralih untuk menggunakan dependensi
Room
1.1.1
dan 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
MenuItem
denganmenuCategory="secondary"
tidak akan lagi menampilkan data sebelumnya saat digunakan dengan metodeNavigationUI
. b/120104424AppBarConfiguration
kini memungkinkan Anda menetapkan instanceOnNavigateUpListener
penggantian 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"
keMenuItem
untuk menghindari munculnya data sebelumnya. aosp/852869- Metode
fromBundle()
dari classArgs
yang dihasilkan kini menggunakanBundle
non-null, bukanBundle
nullable aosp/845616
Perbaikan Bug
- Argumen kini diurai dengan benar dari deep link sebagai
argType
yang 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.Result
telah 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.Result
telah 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: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 menjadiOnDestinationChangedListener
b/118670572OnDestinationChangedListener
sekarang juga meneruskanBundle
argumen aosp/837142- Atribut
app:clearTask
danapp:launchDocument
serta metode terkaitnya telah dihapus. Gunakanapp:popUpTo
dengan root grafik untuk menghapus semua tujuan dari data sebelumnya. b/119628354 ActivityNavigator.Extras
sekarang menggunakan polaBuilder
dan menambahkan kemampuan untuk menetapkan flagIntent.FLAG_ACTIVITY_
apa pun aosp/828140NavController.onHandleDeepLink
telah diubah namanya menjadihandleDeepLink
aosp/836063- Sebagian class dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti
NavOptions
,NavInflater
,NavDeepLinkBuilder
, danAppBarConfiguration
, telah dijadikanfinal
aosp/835681 - Metode
NavHostFragment.setGraph()
yang tidak digunakan lagi telah dihapus aosp/835684 - Metode
NavigationUI.navigateUp(DrawerLayout, NavController)
yang tidak digunakan lagi telah dihapus. aosp/835684 - Pembuatan Fragment telah dipindahkan ke
FragmentNavigator
, memudahkan penetapan delegasi pembuatan Fragment keFragmentFactory
. b/119054429 - Konstruktor untuk
NavGraphNavigator
tidak lagi menggunakanContext
aosp/835340 - NavigatorProvider sekarang
merupakan class, bukan antarmuka.
NavigatorProvider
yang ditampilkan olehgetNavigatorProvider()
tidak berubah fungsinya. aosp/830660 NavDestination.navigate()
telah dihapus. Sekarang, Anda dapat memanggilnavigate()
diNavigator
. aosp/830663- Pemfaktoran ulang
Navigator
secara signifikan, yang meniadakan kebutuhan akanOnNavigatorNavigatedListener
dan memintanavigate
menampilkanNavDestination
yang menjadi tujuan navigasi. - Instance
Navigator
tidak dapat lagi mengirimkan peristiwa kemunculan keNavController
. Sebaiknya gunakanOnBackPressedCallback
untuk mengintersep penekanan tombol kembali dan memanggilnavController.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 bertingkat b/118713731 b/113611083 b/113346925 b/113305559 - Atribut
dataPattern
tujuan<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
@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; 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 adalahListenableWorker
yang mengharapkanSingle<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 mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payload
ke dalamResult
.Result
kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
kini akan menampilkanResult
, bukanPayload
.Worker
tidak memiliki metode pengambil dan penyetel untukData
output. 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
ContentUriTriggers
dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Perubahan ini dapat menyebabkan gangguan. - Menghapus metode vararg yang tersisa di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk 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; metodecombine
yang 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.
LiveData
yang diamati melaluiobserveForever
dilacak 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 menampilkanWorkInfo
denganState
CANCELLED
selamaListenableWorker.onStopped()
. - Memperlakukan
Result
null
sebagai 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-firebase
tidak akan lagi diupdate selagi kami beralih ke versi beta. Kami akan mempertimbangkan untuk menambahkan suatu alternatif di masa mendatang. - Menggabungkan
Payload
ke dalamResult
.Result
kini menjadi "class terkunci" dengan tiga penerapan konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
kini akan menampilkanResult
, bukanPayload
.Worker
tidak memiliki metode pengambil dan penyetel untukData
output. - Menambahkan metode ekstensi Kotlin
Operation.await()
danListenableFuture.await()
. - Mengganti nama
Operation.getException()
menjadiOperation.getThrowable()
. - Class
ContentUriTriggers
dan metode yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. - Menghapus metode vararg yang tersisa di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk 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; metodecombine
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 diFtsOptions
sebagai 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@Update
sekarang mendukungListenableFuture
sebagai jenis nilai yang ditampilkan. b/119418331
Perbaikan Bug
- Memperbaiki bug saat Room salah mencoba untuk menemukan konstruktor dengan kolom dalam properti
ignoredColumns
untuk@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
Collection
lain 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
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; lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
Perubahan API
work-runtime-ktx
memperkenalkanCoroutineWorker
baru.WorkStatus
diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang sesuai telah diganti namanya menjadi variangetWorkInfo
yang sesuai. Perubahan ini dapat menyebabkan gangguan.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat pembedaan ini. Perubahan ini dapat menyebabkan gangguan.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. Perubahan ini dapat menyebabkan gangguan. - Penyetel di
Constraints
tidak 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
WorkStatus
tidak 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
@NonNull
ke API publik untuk meningkatkan ergonomi API. - Menambahkan
WorkManager.enqueueUniqueWork()
API untuk mengantrekanOneTimeWorkRequest
yang unik tanpa harus membuatWorkContinuation
. - Semua varian metode
enqueue
dancancel
padaWorkManager
kini menampilkan jenisOperation
baru. Perubahan ini dapat menyebabkan gangguan. - Semua varian
enqueue
tidak 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
initialize
padaWorkManager
lebih dari sekali per proses kini akan menampilkanIllegalStateException
. Perubahan ini dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builder
dalam artefakwork-runtime-ktx
kini menggunakanListenableWorker
. Perbaikan b/117666259- Pastikan waktu percobaan berikutnya untuk
PeriodicWork
ditetapkan 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
WorkStatus
diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang sesuai telah diganti namanya menjadi variangetWorkInfo
yang sesuai.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat pembedaan ini.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. - Penyetel di
Constraints
tidak 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
WorkStatus
tidak lagi menjadi bagian dari API publik. Configuration.getMaxJobSchedulerID()
danConfiguration.getMinJobSchedulerID()
secara berurutan diganti namanya menjadiConfiguration.getMinJobSchedulerId()
danConfiguration.getMaxJobSchedulerId()
.- Semua varian metode
enqueue
dancancel
diWorkManager
sekarang menampilkan jenisOperation
baru. - Semua varian
enqueue
tidak lagi menerima vararg untukWorkRequest
. - Mencoba untuk melakukan
initialize
WorkManager
lebih 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
@DatabaseView
dalam@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
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
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-ktx
telah dikemas ke dalamnavigation-testing artifact
dan tidak akan dipublikasikan lagi. - Artefak
navigation-testing
kini 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 menampilkanIndexOutOfBoundsException
jika 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 konstruktorWorker
default. Perubahan API ini dapat menyebabkan gangguan. - Mengganti nama
NonBlockingWorker
menjadiListenableWorker
, yang sekarang merupakan class publik yang tidak tersembunyi 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 mengupdateListenableFuture
sesuai hasilnya. Penerapan referensiListenableFuture
disediakan dalam paketFutures
dialpha02
(lihat di bawah pada bagianWorkManager
).Worker
memperluasListenableWorker
dan masih beroperasi seperti sebelumnya, dengan metodeResult doWork()
abstrak.- Mengacak beberapa metode dan anggota dari
Worker
keListenableWorker
. - Kami akan segera menyediakan penerapan referensi untuk
ListenableWorker
yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
- Antarmuka
WorkerFactory
dan penerapan konkretDefaultWorkerFactory
telah digabungkan menjadi class abstrak yang disebutWorkerFactory
. Penerapan ini memastikan bahwa perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instanceWorkerFactory
yang 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
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 kontrakFuture
. - Untuk mempertahankan kesamaan dengan metode
getStatus*
sinkron, kami menyediakan varianListenableFuture
, dan mengganti nama saat ini yang menampilkanLiveData
agar 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.pro
duplikat. 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
Worker
baru. b/116296569 - Memperbaiki potensi
NullPointerException
dalam kondisi race saatREPLACE
dilakukan pada pekerjaan. b/116253486 dan b/116677275 WorkContinuation.combine()
sekarang menerima satuWorkContinuation
atau lebih, bukan dua atau lebih. b/117266752
Perubahan API yang Dapat Menyebabkan Gangguan
- Menghapus semua metode dan class yang sebelumnya
deprecated
, terutama konstruktorWorker
default. - Antarmuka
WorkerFactory
dan penerapan konkretDefaultWorkerFactory
telah 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
ResolvableFuture
danAbstractResolvableFuture
sebagai 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
@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 RxCompletable
,Single<T>
, danMaybe<T>
. b/63317956 - Jenis yang Tidak Dapat Diubah dengan
@Relation
: Sebelumnya, Room memerlukan kolom beranotasi@Relation
dapat disetel, tetapi sekarang kolom tersebut dapat berupa parameter konstruktor. enableMultiInstanceInvalidation
: Adalah API baru diRoomDatabase.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/62334005fallbackToDestructiveMigrationOnDowngrade
: Adalah API baru diRoomDatabase.Builder
untuk otomatis membuat ulang database jika terjadi downgrade. b/110416954ignoredColumns
: 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
danmDatabase
diRoomDatabase
sekarang@Deprecated
dan 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
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
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
NavigationView
sekarang 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 adalahNonNull
b/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)
keWorker
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 de-duplikasi
LiveData
secara internal.
Perubahan API
- Anda kini dapat membuat instance
Worker
sendiri pada runtime dengan menetapkanWorkerFactory
sebagai bagian dariWorkManager.Configuration
. Factory untuk fallback adalahDefaultWorkerFactory
, yang cocok dengan perilaku WorkManager versi sebelumnya.- Konstruktor default untuk
Worker
danNonBlockingWorker
kini 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
ListenableFuture
yang 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
TestDriver
melaluiTestDriver.setInitialDelayMet(UUID)
danTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Perubahan yang Dapat Menyebabkan Gangguan
- Konstruktor default
Worker
danNonBlockingWorker
sudah 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
Data
untuk 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
JobScheduler
terlampaui. b/111569265 - Memperbaiki
ConcurrentModificationException
dalamConstraintTracker
. b/112272753 - Mengubah anotasi jenis nilai yang ditampilkan untuk
Data.getBooleanArray(String)
danData.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)
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
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 menggunakanWorkRequest.Builder#build()
. b/111408337 - Mengaktifkan penggunaan
RescheduleReceiver
hanya jika adaWorkRequest
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
. 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.INFO
dan 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
PeriodicWorkRequest
saat menggunakanJobScheduler
. 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 performa penjadwalan ulang saat aplikasi memulai ulang setelah ditutup paksa.
- Mengizinkan
TestScheduler.setAllConstraintsMet(UUID)
untuk dipanggil sebelum atau sesudah mengantrekanWorkRequest
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 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:type
telah diubah menjadiapp: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 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.index
akan menjadisetDemoControllerIndex
b/79995048 - Misalnya
action_show_settings
akan menjadiactionShowSettings
b/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
setPopUpTo
dengan tujuan pertama dalam grafik b/109909461 - Memperbaiki masalah saat 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 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
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 prepend (placeholder dinonaktifkan, PositionalDataSource) b/80149146
- (Sudah dirilis dalam
1.0.1
) Memperbaiki error ketikaPagedListAdapter
danAsyncPagedListDiffer
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
demi stabilitas. Paging RxJava2 1.0.1
juga dirilis, dan identik dengan 1.0.0-rc1
.
Perbaikan Bug
- Memperbaiki error ketika
PagedListAdapter
danAsyncPagedListDiffer
gagal menandai peristiwa pemindahan. b/110711937
WorkManager
WorkManager 1.0.0-alpha04
dirilis.
Perbaikan Bug
PeriodicWorkRequest
kini 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
JobScheduler
setelah 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
Room
versi1.1.1-rc1
.
Perubahan API
Menambahkan
getStatusesSync()
, versi sinkron dariWorkContinuation.getStatuses()
.Worker
memiliki kemampuan untuk membedakan pembatalan yang dimulai oleh pengguna dengan penghentian sementara yang diminta oleh sistem operasi.Worker.isStopped()
akan menampilkantrue
jika penghentian jenis apa pun diminta.Worker.isCancelled()
akan menampilkantrue
jika 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 keJobScheduler
atauAlarmManager
. Dengan demikian,WorkManager
tidak akan menggunakan semua slotJobScheduler
yang tersedia.Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
yang membantu menentukan rentang ID pekerjaanJobScheduler
yang aman untuk digunakan olehWorkManager
. b/79996760Worker.getRunAttemptCount()
menampilkan jumlah percobaan saat ini untukWorker
tertentu. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
memungkinkan Anda mengantrekanPeriodicWorkRequest
unik. b/79600647WorkManager.cancelAllWork()
membatalkan semuaWorker
. Library yang bergantung padaWorkManager
dapat 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 menghapusWorkRequest
tanpatag
atau saatid
tidak tersedia. b/109572351
Perubahan yang Dapat Menyebabkan Gangguan
Mengganti nama
Worker.WorkerResult
menjadiWorker.Result
.Worker.onStopped
kini memiliki parameterisCancelled
tambahan yang ditetapkan ketrue
saatWorker
dibatalkan secara eksplisit.
7 Juni 2018
Navigation 1.0.0-alpha02
dirilis.
Navigation
Perubahan Perilaku
FragmentNavigator
sekarang menggunakansetReorderingAllowed(true)
. b/109826220Navigation sekarang meng-URLDecode argumen yang diurai dari URL deep link. b/79982454
Perbaikan Bug
Memperbaiki
IllegalStateException
saat 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
IllegalArgumentException
saat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847Memperbaiki
StackOverflowError
saat menggunakan NavDeepLinkBuilder. b/109653065Memperbaiki
IllegalArgumentException
saat 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
clearTask
untuk tindakan dan API terkaitnya diNavOptions
tidak digunakan lagi. b/80338878Atribut
launchDocument
untuk tindakan dan API terkaitnya diNavOptions
tidak digunakan lagi. b/109806636
24 Mei 2018
WorkManager 1.0.0-alpha02
dirilis.
WorkManager
Perbaikan Bug
Memperbaiki
NullPointerException
padaState.isFinished()
. b/79550068Memperbaiki masalah yang menyebabkan
Worker
dijadwalkan 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
Worker
ke thread latar belakang.Implementasi
AlarmManager
kini melakukan pembersihan dengan benar saat semua pekerjaan yang tertunda selesai.Memperbaiki kueri SQL pembersihan yang memengaruhi lokalitas selain Inggris. b/80065360
Menambahkan dukungan untuk
float
diData
. b/79443878Data.Builder.putAll()
kini menampilkan instanceBuilder
. b/79699162Lebih banyak javadoc dan perbaikan dalam dokumentasi. b/79691663
Perubahan API
Worker
dapat bereaksi saat dihentikan.Worker.isStopped()
dapat digunakan untuk memeriksa apakahWorker
telah dihentikan.Worker.onStopped()
dapat digunakan untuk melakukan operasi pembersihan ringan.Worker.getTags()
API menampilkanSet
tag yang terkait denganWorker
.Menambahkan overload
javax.time.Duration
untuk API yang menggunakan kombinasi durasi danTimeUnit
. Ini dilindungi oleh@RequiresApi(26)
.Ekstensi
WorkManager
telah dipindahkan dari paketandroidx.work.ktx
ke 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-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
. 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
RxPagedListBuilder
ditambahkan melalui artefakandroid.arch.paging:rxjava2
baru.
Perubahan API
Perubahan API untuk memperjelas peran eksekutor dalam builder:
Mengganti nama
setBackgroundThreadExecutor()
menjadisetFetchExecutor()
(dalamPagedList.Builder
danLivePagedListBuilder
)Mengganti nama
setMainThreadExecutor()
menjadisetNotifyExecutor()
(dalamPagedList.Builder
).
Memperbaiki anggota
PagedList.mCallbacks
menjadi pribadi.
Perbaikan Bug
LivePagedListBuilder
memicu pemuatanPagedList
awal pada eksekutor yang ditentukan, bukannya kumpulan thread IO Komponen Arch.Perbaikan perilaku pembatalan validasi dalam wrapper
DataSource
internal (yang digunakan untuk mengimplementasikanDataSource.map
, serta pemuatanPositionalDataSource
yang dinonaktifkan placeholder). b/77237534
Room
Perbaikan Bug
Memperbaiki bug penting dalam implementasi
Single
danMaybe
Rx Room saat kueri didaur ulang lebih awal, sehingga terjadi masalah jika Anda menambahkan lebih dari 1 observer ke instanceSingle
atauMaybe
yang ditampilkan. b/76031240RoomDatabase.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
- Berdasarkan masukan Ulasan API,
@RawQuery
tidak lagi menerima penerusanString
sebagai 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 int
sebagai penggantivararg Integer
.
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 propertiobservedEntities
selama Pojo tersebut mereferensikan ke satu atau beberapa entity melalui kolomEmbedded
atauRelation
miliknya. 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.LoadParams
sekarang memiliki konstruktor publik dan objekDataSource.LoadCallback
sekarang abstrak. Perubahan ini memungkinkan penggabunganDataSource
atau pengujianDataSource
secara 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.extensions
danLivePagedListProvider
. DataSource.Factory
diubah dari antarmuka menjadi class abstrak guna memungkinkan fungsi peta.
Perbaikan Bug
- Mengubah Builder menjadi final. b/70848565
- Perbaikan implementasi
DataSource
Room untuk menangani kueri multitabel. Perbaikan ini disertakan dalam Room 1.1.0-beta1, lihat di atas. - Perbaikan bug yang menyebabkan
BoundaryCallback.onItemAtEndLoaded
tidak dipanggil untukPositionalDataSource
jika 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
addObserver
danremoveObserver
di 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/63807999SupportSQLiteQuery
sekarang memiliki metodegetArgCount()
yang akan menampilkan jumlah parameter kueri. b/67038952
Perbaikan Bug
@RawQuery
sekarang didukung dengan benar untuk kueri Paging. b/72600425Room kini dengan benar menamai class
Dao
yang dihasilkan untuk menghindari konflik nama saat 2 atau beberapa antarmukaDao
merupakan class dalam di paket yang sama dan memiliki nama yang sama. b/73536380Jenis kolom generik di
Pojo
diurai dengan benar sebagai anggota class yang diperluas. b/73534868Parameter kueri dalam antarmuka
Dao
yang diwarisi dari artefak dependensi sekarang diurai dengan benar. b/68118746Kueri 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
dancom.android.support:recyclerview-v7:27.1.0
- ini harus dilakukan secara bersamaan, selagi ListAdapter dipindahkan dari Paging ke RecyclerView
- Perbarui referensi
ListAdapterHelper
apa pun keAsyncListDiffer
getItem(index)
/getItemCount()
dihapus dan diganti dengan pola pemanggilangetCurrentList().getItem(index)
dangetCurrentList().size()
yang lebih eksplisit.
- Perbarui semua referensi
ListAdapterConfig
keAsyncDifferConfig
- Perbarui semua referensi
DiffCallback
keDiffUtil.IttemCallback
- Perbarui semua referensi
PagedListAdapterHelper
keAsyncPagedListDiffer
- 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 16
atau 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 artefakguava
dari 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
@Transaction
di classDAO
. Ini berfungsi baik untukJava 8
maupunKotlin
. b/72416735
Perbaikan Bug
Konstruktor dengan
@Relation
tidak akan menyebabkan error kompilasi jika ada konstruktor lain yang dapat digunakan. b/72884434Nama tabel yang di-escape dengan
'
dalam metode@Query
sekarang di-escape dengan benar untuk pelacak pembatalan. b/72366965Room kini menggunakan anotasi
@Metadata
Kotlin 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.0
android.arch.lifecycle:viewmodel:1.1.0
Perubahan API
LifecycleActivity
danLifecycleFragment
yang sudah tidak digunakan lagi sekarang telah dihapus. Harap gunakanFragmentActivity
,AppCompatActivity
, atau dukungFragment
.- Anotasi
@NonNull
telah ditambahkan keViewModelProviders
danViewModelStores
- Konstruktor
ViewModelProviders
tidak digunakan lagi. Harap gunakan metode statisnya secara langsung ViewModelProviders.DefaultFactory
tidak digunakan lagi - harap gunakanViewModelProvider.AndroidViewModelFactory
- Metode
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
statis telah ditambahkan untuk mengambilFactory
statis yang cocok untuk membuat instanceViewModel
danAndroidViewModel
.
Room 1.1.0-alpha1
Fitur Baru
RawQuery
: API baru ini memungkinkan metode@Dao
menerima SQL sebagai parameter kueri b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: API baru diRoomDatabase.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 Room alfa baru, Anda harus menggunakan pagingalpha-4
atau yang lebih tinggi, dan beralih dariLivePagedListProvider
keLivePagedListBuilder
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
- 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
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 UI thread. - Perilaku error di sekitar parameter pemuatan awal lebih jelas
TiledDataSource
diganti namanya menjadiPositionalDataSource
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 menjadiItemKeyedDataSource
agar perbedaannya jelas.LivePagedListBuilder
danDataSource.Factory
menggantikanLivePagedListProvider
. Builder menyediakan kemampuan yang sama dengan lebih banyak penyesuaian dan default yang lebih sederhana. Factory mengizinkan kode pembuatanDataSource
untuk tetap independen dariLiveData
.PagedList.BoundaryCallback
ditambahkan untuk kasus penggunaan database + jaringan.Konstruktor
PagedList.Builder
mengambilDataSource
+PagedList.Config
, sehingga sekarang lebih mirip denganLivePagedListBuilder
, dan mengizinkan operator diamond dalam bahasa Java, atau jenis yang ditentukan dalam Kotlin.PagedList.getConfig()
ditambahkan, danPagedList.Config
sekarang 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
LiveDataReactiveStreams
kini 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_STOP
sekarang dikirim jikaonSaveInstanceState
dipanggil (sebelumnya, hanya ditandai sebagaiCREATED
tanpa mengirimON_STOP
). Anda dapat membaca selengkapnya di dokumentasi Lifecycles.
Perbaikan Bug
Room:
- Room sekarang bergantung pada artefak xerial terbaru yang memperbaiki masalah
OutOfMemory
selama kompilasi. b/62473121 - Metode
Query
sekarang dapat dianotasi dengan@Transaction
. Untuk mengetahui detailnya, lihat dokumen referensi di@Transaction
. b/65112315 - Class
StringUtil
di Room dihapus dari API publik (tidak pernah dimaksudkan sebagai API publik).
- Room sekarang bergantung pada artefak xerial terbaru yang memperbaiki masalah
Lifecycles:
LiveData
berfungsi dengan baik saat Activity dicakup sebagian di API < 24. b/65665621Metode
OnLifecycleEvent
di class induk kini dipanggil dengan benar, atau peringatan dicetak selama kompilasi jika tidak memungkinkan. b/63474615Lifecycle sekarang menyimpan
WeakReference
kembali 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:
LiveDataReactiveStreams
sekarang berhenti berlangganan dengan benar dari penayang sumber saatLiveData
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 saat pembuatan langganan berlangsung. b/66337741
FullLifecycleObserver
untuk 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
@Query
memiliki kolom@NonNull
yang 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
Nullable
jika kunci tersebut adalahInteger
atauLong
. 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.0
menjadi stabil. Keduanya tidak diperlukan saat menggunakan Support Library26.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 Lifecycles (runtime, umum) dan Arch Core (umum). Kedua artefak ini
adalah versi
1.0.0
sejak 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.1
untuk menggunakan artefakcommon-java8
yang baru. Masalah ini akan diperbaiki dalambeta2
.
- Karena adanya bug dalam
Perubahan Paket
android.arch.persistence.room.db
telah dipindahkan keandroid.arch.persistence.db
android.arch.persistence.room.db-impl
telah 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
transient
kini 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
DAO
dan 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
@Query
ditangani 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
@Generated
jika aplikasi memiliki anotasi di classpath. b/35754819Memperbaiki bug perbandingan observer MediatorLiveData. b/64413274
Kueri
WITH
SQLite 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 NULL
ditambahkan 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
removeObserver
LifecycleRegistry, 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
observer1
ditambahkan sebelumobserver2
, maka observer tersebut akan menerimaON_CREATE
dan 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: jikaobserver1
ditambahkan sebelumobserver2
, makaON_CREATE
akan dikirim terlebih dahulu keobserver1
, lalu keobserver2
(begitu juga untukON_START
danON_RESUME
), tetapi peristiwaON_PAUSE
akan dikirim terlebih dahulu keobserver2
dan baru setelah itu keobserver1
(begitu juga untukON_STOP
danON_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.Builder
untuk 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.Builder
untuk mengamati kapan database dibuat atau dibuka. b/62699324@Query sekarang dapat menampilkan RxJava
Maybe
atauSingle
. b/62231019
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/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@Update
sekarang 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
@OnLifecycleEvent
sekarang hanya mendukung 1 parameter peristiwa. Ini adalah perubahan untuk persiapan pada dukungan Java 8 sehingga kami dapat bermigrasi ke antarmuka dengan metode default di masa mendatang. Sehubungan dengan perubahan ini, hanya metode beranotasi@OnLifecycleEvent(ON_ANY)
yang dapat menerima parameter kedua dengan jenisEvent
(parameter pertama adalahLifecycleOwner
). Lihat dokumentasi Lifecycle untuk detailnya.Class
LifecycleActivity
danLifecycleFragment
dipindahkan 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@Update
dalam metode@DAO
sekarang dapat memiliki parameter dari jenisIterable
. b/62259820
Perbaikan Bug
Metode yang diganti dengan peristiwa siklus proses tidak lagi dipanggil beberapa kali.
Beberapa parameter
IN
sekarang ditangani dengan benar. b/62608681Class DAO abstrak sekarang dapat memiliki konstruktor yang menerima instance
@Database
. b/38488747DAO
sekarang 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
Fragment
danActivityCompat
Lifecycle di Support Library belum mengimplementasikan antarmukaLifecycleOwner
. Keduanya akan menerapkan antarmuka ketika Komponen Arsitektur mencapai versi 1.0.0.