Halaman ini memberikan informasi tentang rilis Komponen Arsitektur, termasuk masalah umum, batasan, dan saran umum. Harap tinjau catatan sebelum menggunakan Komponen Arsitektur.
Masukan Anda sangat penting. Harap laporkan masalah dengan Pelacak Masalah, sehingga kami dapat mengintegrasikan masukan Anda ke rilis akhir.
Untuk membahas masalah atau ide dengan developer lain yang menggunakan Komponen Arsitektur, bergabunglah dengan Komunitas Google+ Android Development dan lihat Kategori Komponen Arsitektur.
6 Desember 2018
Paging
Paging 2.1.0-rc01
dirilis tanpa perubahan dari 2.1.0-beta01
.
Navigation
Navigation 1.0.0-alpha08
dirilis. Rilis ini berisi perubahan API yang dapat menyebabkan gangguan; silakan lihat bagian Perubahan yang Dapat Menyebabkan Gangguan di bawah ini.
Fitur Baru
- Label tujuan, saat digunakan dengan metode
NavigationUI
, sekarang akan otomatis mengganti instance{argName}
diandroid:label
dengan argumen yang benar b/80267266 - Navigation sekarang bergantung pada Dukungan Library 28.0.0 b/120293333
Perubahan yang Dapat Menyebabkan Gangguan
OnNavigatedListener
telah diganti namanya menjadiOnDestinationChangedListener
b/118670572OnDestinationChangedListener
sekarang juga meneruskan argumenBundle
aosp/837142- Atribut
app:clearTask
danapp:launchDocument
serta metode terkaitnya telah dihapus. Gunakanapp:popUpTo
dengan root grafik untuk menghapus semua tujuan dari back stack. b/119628354 ActivityNavigator.Extras
sekarang menggunakan polaBuilder
dan menambahkan kemampuan untuk mengatur semua penandaIntent.FLAG_ACTIVITY_
aosp/828140NavController.onHandleDeepLink
telah diganti namanya menjadihandleDeepLink
aosp/836063- Beberapa kelas dan metode yang tidak dimaksudkan untuk pembuatan subclass, seperti
NavOptions
,NavInflater
,NavDeepLinkBuilder
, danAppBarConfiguration
, telah dinyatakanfinal
aosp/835681 - Metode
NavHostFragment.setGraph()
yang tidak digunakan lagi telah dihapus aosp/835684 - Metode
NavigationUI.navigateUp(DrawerLayout, NavController)
yang tidak digunakan lagi telah dihapus. aosp/835684 - Pembuatan fragmen telah dipindahkan ke
FragmentNavigator
, sehingga lebih mudah untuk mendelegasikan pembuatan Fragmen keFragmentFactory
. b/119054429 - Konstruktor untuk
NavGraphNavigator
tidak lagi menggunakanContext
aosp/835340 - NavigatorProvider sekarang merupakan kelas, bukan antarmuka.
NavigatorProvider
yang ditampilkan olehgetNavigatorProvider()
belum berubah fungsinya. aosp/830660 NavDestination.navigate()
telah dihapus. Sebagai gantinya, panggilnavigate()
padaNavigator
. aosp/830663- Pemfaktoran ulang
Navigator
secara signifikan, meniadakan kebutuhan akanOnNavigatorNavigatedListener
dannavigate
menampilkanNavDestination
yang menjadi tujuan navigasi. - Instance
Navigator
tidak dapat lagi mengirim peristiwa pop keNavController
. Pertimbangkan penggunaanOnBackPressedCallback
untuk mencegah penekanan tombol kembali dan memanggilnavController.popBackStack()
. aosp/833716
Perbaikan Bug
popUpTo
sekarang berfungsi secara konsisten ketika tujuannya adalah elemen<navigation>
b/116831650- Memperbaiki sejumlah bug yang mengakibatkan
IllegalArgumentException
saat menggunakan grafik bersarang b/118713731 b/113611083 b/113346925 b/113305559 - Atribut
dataPattern
dari tujuan<activity>
sekarang akan mengisi argumen dari argumen non-String dengan memanggiltoString()
b/120161365
Safe Arg
- Safe Arg mendukung objek Serializable, termasuk nilai Enum. Jenis Enum dapat menetapkan nilai default dengan menggunakan literal enum tanpa nama kelas (misalnya
app:defaultValue="READ"
) b/111316353 - Safe Arg mendukung array dari semua jenis yang didukung b/111487504
- Safe Arg sekarang mengabaikan subfolder direktori resource b/117893516
- Safe Arg menambahkan anotasi
@Override
jika sesuai b/117145301
5 Desember 2018
WorkManager
WorkManager 1.0.0-alpha12
dirilis. Rilis ini berisi beberapa perubahan API yang dapat menyebabkan gangguan; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah ini. Versi ini kemungkinan akan dirilis sebagai beta pertama kami. alpha12
juga berisi pembaruan dokumentasi yang ekstensif.
Perubahan API
- Artefak baru,
work-rxjava2
, memperkenalkanRxWorker
. Ini adalahListenableWorker
yang mengharapkanSingle<Payload>
. - Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Ini berarti artefak
work-firebase
tidak akan diperbarui lagi sementara kita menuju ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang. - Menggabungkan
Payload
menjadiResult
.Result
sekarang merupakan "kelas terkunci" dengan tiga implementasi konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
sekarang menghasilkanResult
, bukanPayload
.Worker
tidak memiliki metode getter dan setter untukData
output. Ini adalah perubahan yang dapat menyebabkan gangguan. - Menambahkan
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
danConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
serta variannya untuk meningkatkan dukungan pemicuan konten URI secara lambat. b/119919774 - Menambahkan varian
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. Metode ini memerlukan API 26. - Menambahkan metode ekstensi Kotlin
Operation.await()
danListenableFuture.await()
. - Mengganti nama
Operation.getException()
menjadiOperation.getThrowable()
. Ini adalah perubahan yang dapat menyebabkan gangguan. - Kelas dan metode
ContentUriTriggers
yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. Ini adalah perubahan yang dapat menyebabkan gangguan. - Menghapus metode vararg lainnya di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda bisa menggabungkan vararg yang ada denganArrays.asList(...)
. Kami masih menyertakan versi argumen tunggal dari masing-masing metode. Ini adalah perubahan yang dapat menyebabkan gangguan. - Menghapus varian
WorkContinuation.combine(OneTimeWorkRequest, *)
. Varian ini menghadirkan API yang membingungkan; metodecombine
yang ada lebih mudah dipahami. Ini adalah perubahan yang dapat menyebabkan gangguan.
Perbaikan Bug
- Implementasi Pre-Marshmallow sekarang lebih dapat diandalkan dalam memulihkan dari proses kerusakan pekerjaan yang sudah dieksekusi.
LiveData
yang diamati melaluiobserveForever
dilacak melalui WorkManager. Ini adalah backport perbaikan library Room. b/74477406Data.Builder.build()
sekarang menampilkan pengecualian jika objek yang diserialisasi melebihi ukuran maksimumnya. Sebelumnya, pengecualian hanya terjadi pada thread latar belakang yang tidak dapat Anda tidak tangani dengan baik.- Membedakan lebih jauh tugas yang dihentikan vs dibatalkan;
getWorkInfoById()
akan menampilkanWorkInfo
denganCANCELLED
State
selamaListenableWorker.onStopped()
. - Memperlakukan
Result
null
sebagai kegagalan padaListenableWorker
. b/120362353 - Perbaikan spekulatif untuk Tablet Shield yang menjalankan API 24 yang terkadang menampilkan
IllegalArgumentException
. b/119484416
Perubahan API yang Dapat Menyebabkan Gangguan
- Dukungan untuk Firebase JobDispatcher telah dihapus karena tidak akan digunakan lagi dalam waktu dekat. Ini berarti artefak
work-firebase
tidak akan diperbarui lagi sementara kita menuju ke versi beta. Kami akan mencari cara untuk menambahkan alternatif di masa mendatang. - Menggabungkan
Payload
menjadiResult
.Result
sekarang merupakan "kelas terkunci" dengan tiga implementasi konkret, yang dapat Anda peroleh melaluiResult.success()
(atauResult.success(Data)
),Result.failure()
(atauResult.failure(Data)
), danResult.retry()
.ListenableFuture
sekarang menghasilkanResult
, bukanPayload
.Worker
tidak memiliki metode getter dan setter untukData
output. - Menambahkan metode ekstensi Kotlin
Operation.await()
danListenableFuture.await()
. - Mengganti nama
Operation.getException()
menjadiOperation.getThrowable()
. - Kelas dan metode
ContentUriTriggers
yang mereferensikannya tidak lagi tersedia untuk penggunaan publik. - Menghapus metode vararg lainnya di
WorkManager
,WorkContinuation
, danOneTimeWorkRequest
untuk menyederhanakan API. Untuk memperbaiki masalah build, Anda bisa menggabungkan vararg yang ada denganArrays.asList(...)
. Kami masih menyertakan versi argumen tunggal dari masing-masing metode. - Menghapus varian
WorkContinuation.combine(OneTimeWorkRequest, *)
. Varian ini menghadirkan API yang membingungkan; metodecombine
yang ada lebih mudah dipahami.
4 Desember 2018
Room
Room 2.1.0-alpha03
dirilis dengan dukungan coroutine dan beberapa perbaikan bug.
Perubahan API
tokenizer
FTS di@Fts3
/@Fts4
sekarang menggunakan String, bukan Enum. Ini memungkinkan penggunaan tokenizer kustom di Room. Tokenizer built-in masih didefinisikan dalamFtsOptions
sebagai konstanta string. . b/119234881
Fitur Baru
- Couroutine: Metode DAO sekarang dapat menangguhkan fungsi. Untuk mendukung penangguhan fungsi di Room, artefak baru telah dirilis,
room-coroutines
. b/69474692 - Metode DAO yang dianotasi dengan
@Insert
,@Delete
, atau@Update
sekarang mendukungListenableFuture
sebagai jenis pengembalian. b/119418331
Perbaikan Bug
- Memperbaiki bug yang membuat Room keliru mencoba untuk menemukan konstruktor dengan kolom pada properti
ignoredColumns
@Entity
. b/119830714 - Memperbaiki bug yang membuat Room tidak menandai parameter metode DAO sebagai final dalam implementasi yang dihasilkan. b/118015483
- Memperbaiki bug yang membuat prosesor Room tidak bekerja saat melaporkan error pada kueri yang memuat simbol khusus. b/119520136
- Memperbaiki bug yang membuat Room menolak berbagai implementasi
Collection
lainnya sebagai argumen ekspresiIN
. b/119884035 - Memperbaiki bug yang membuat LiveData yang ditampilkan dari Room akan mendapatkan pembersihan sampah memori saat diamati selamanya sehingga tidak lagi memberikan data baru. b/74477406
- Memperbarui close lock
RoomDatabase
untuk mengurangi pertentangan kunci. b/117900450
8 November 2018
WorkManager
WorkManager 1.0.0-alpha11
dirilis. Rilis ini berisi banyak perubahan yang akan menjadi API stabil saat beta
.
Pada rilis ini, ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis lama; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
Perubahan API
work-runtime-ktx
memperkenalkanCoroutineWorker
baru.WorkStatus
telah diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang terkait telah diganti namanya menjadi variangetWorkInfo
yang sesuai. Ini adalah perubahan yang dapat menyebabkan gangguan.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat perbedaan ini. Ini adalah perubahan yang dapat menyebabkan gangguan.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. Ini adalah perubahan yang dapat menyebabkan gangguan. - Setter di
Constraints
tidak lagi menjadi bagian dari API publik. Ini adalah perubahan yang dapat menyebabkan gangguan. WorkerParameters.getTriggeredContentUris()
danWorkerParameters.getTriggeredContentAuthorities()
sebelumnya menampilkan array. Sekarang, metode ini menampilkan Koleksi. Ini adalah perubahan yang dapat menyebabkan gangguan.ListenableWorker.onStartWork()
diganti namanya menjadiListenableWorker.startWork()
. Ini adalah perubahan yang dapat menyebabkan gangguan.- Konstruktor untuk
WorkStatus
tidak lagi menjadi bagian dari API publik. Ini adalah perubahan yang dapat menyebabkan gangguan. Configuration.getMaxJobSchedulerID()
danConfiguration.getMinJobSchedulerID()
diganti namanya menjadiConfiguration.getMinJobSchedulerId()
danConfiguration.getMaxJobSchedulerId()
. Ini adalah perubahan yang dapat menyebabkan gangguan.- Menambahkan beberapa anotasi
@NonNull
ke API publik untuk meningkatkan ergonomi API. - Menambahkan API
WorkManager.enqueueUniqueWork()
untuk mengantreOneTimeWorkRequest
unik tanpa perlu membuatWorkContinuation
. - Semua varian metode
enqueue
dancancel
padaWorkManager
sekarang menampilkan jenisOperation
baru. Ini adalah perubahan yang dapat menyebabkan gangguan. - Semua varian
enqueue
tidak lagi menerima vararg untukWorkRequest
. Ini adalah perubahan yang dapat menyebabkan gangguan. Sebagai gantinya, gunakan Koleksi. Anda dapat menggunakanArrays.asList()
untuk memodifikasi kode yang ada. Kami melakukan ini untuk mengurangi antarmuka API dan jumlah metode. - Mencoba
initialize
WorkManager
lebih dari satu kali per proses sekarang akan mengakibatkanIllegalStateException
. Ini adalah perubahan yang dapat menyebabkan gangguan.
Perbaikan Bug
WorkRequest.Builder
dalam artefakwork-runtime-ktx
sekarang menggunakanListenableWorker
. Perbaikan b/117666259- Memastikan waktu proses berikutnya untuk
PeriodicWork
berada di masa mendatang. Perbaikan b/118204399 - Menghapus disk I/O potensial ketika menggunakan WorkManager saat memulai aplikasi. Perbaikan b/117796731
- Memperbaiki kondisi race di
WorkConstraintsTracker
. Perbaikan android-workmanager/issues/56
Perubahan API yang Dapat Menyebabkan Gangguan
WorkStatus
telah diganti namanya menjadiWorkInfo
. Semua varian metodegetStatus
yang terkait telah diganti namanya menjadi variangetWorkInfo
yang sesuai.ListenableWorker.onStopped()
tidak lagi menerima argumen boolean jikaWorkRequest
dibatalkan.WorkManager
tidak lagi membuat perbedaan ini.- Paket
androidx.work.test
telah diganti namanya menjadi paketandroidx.work.testing
. - Setter di
Constraints
tidak lagi menjadi bagian dari API publik. WorkerParameters.getTriggeredContentUris()
danWorkerParameters.getTriggeredContentAuthorities()
sebelumnya menampilkan array. Sekarang, metode ini menampilkan Koleksi.ListenableWorker.onStartWork()
diganti namanya menjadiListenableWorker.startWork()
.- Konstruktor untuk
WorkStatus
tidak lagi menjadi bagian dari API publik. Configuration.getMaxJobSchedulerID()
danConfiguration.getMinJobSchedulerID()
diganti namanya menjadiConfiguration.getMinJobSchedulerId()
danConfiguration.getMaxJobSchedulerId()
.- Semua varian metode
enqueue
dancancel
padaWorkManager
sekarang mengembalikan jenisOperation
baru. - Semua varian
enqueue
tidak lagi menerima vararg untukWorkRequest
. - Mencoba
initialize
WorkManager
lebih dari satu kali per proses sekarang akan mengakibatkanIllegalStateException
.
1 November 2018
Paging
Paging 2.1.0-beta01
dirilis tanpa perubahan dari 2.1.0-alpha01
.
30 Oktober 2018
Room
Room 2.1.0-alpha02
dirilis dengan beberapa perbaikan bug dan fitur baru.
Fitur Baru
- Menambahkan dukungan untuk mereferensikan
@DatabaseView
di@Relation
. b/117680932
Perbaikan Bug
- Memperbaiki bug yang membuat Room menjalankan I/O disk di thread utama saat berlangganan dan berhenti langganan jenis pengembalian Rx. b/117201279
- Memperbaiki bug yang membuat Room gagal menemukan konverter jenis yang sesuai untuk sebuah kolom dalam kelas entity Kotlin. b/111404868
- Memperbaiki bug yang membuat Room menghasilkan kode yang salah untuk implementasi antarmuka
DAO
yang berisi metode default Kotlin yang tidak memiliki argumen. b/117527454 - Mengupdate parser tata bahasa SQLite Room, memperbaiki masalah performa yang menyebabkan waktu pembuatan build yang lama. b/117401230
29 Oktober 2018
Navigation
Navigation 1.0.0-alpha07
dirilis dengan perbaikan bug dan perubahan API.
Fitur Baru
- Kelas AppBarConfiguration baru memungkinkan Anda menyesuaikan tujuan yang dianggap sebagai tujuan tingkat paling atas. Lihat dokumentasi terbaru untuk detailnya. b/117333663
- Sekarang Anda dapat meneruskan argumen ke tujuan awal grafik b/110300470
- Deep link sekarang mendukung skema kustom dengan tanda titik, tanda hubung, dan tanda tambah. 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
sekarang memiliki dependensi pada library standar Kotlin. API telah diubah agar lebih konsisten dengan konvensi Kotlin, tetapi Anda dapat terus menggunakannya untuk pengujian aplikasi yang ditulis di Java. - Grafik navigasi terdaftar di manifes metadata tidak lagi didukung. b/118355937
- Tindakan tidak dapat lagi dilampirkan ke tujuan <activity>. aosp/785539
Perbaikan Bug
- Deep link sekarang mengurai parameter kueri dengan benar. b/110057514
- Tujuan aktivitas sekarang menerapkan dengan benar semua animasi masuk dan keluar. b/117145284
- Memperbaiki masalah yang terjadi setelah perubahan konfigurasi saat menggunakan Navigator kustom. b/110763345
Safe Arg
- Safe Arg sekarang memiliki dependensi tetap pada Android Gradle Plugin 3.2.1. b/113167627
- Direction sekarang dapat dibuat untuk kelas dalam. b/117407555
- Memperbaiki masalah terkait pembuatan Direction ke grafik <include>. b/116542123
12 Oktober 2018
Paging
Paging 2.1.0-alpha01
dirilis dengan dua tambahan utama - penurunan halaman, dan library ekstensi KTX untuk setiap artefak - serta beberapa perubahan API dan perbaikan bug lainnya.
Perubahan API
- Menambahkan
PagedList.Config.Builder.setMaxSize()
untuk membatasi jumlah item yang dimuat dalam memori. - Menambahkan
androidx.paging.Config()
sebagai alternatif Kotlin untukPagedList.Config.Builder
- Menambahkan
androidx.paging.PagedList()
sebagai alternatif Kotlin untukPagedList.Builder
- Menambahkan
DataSourceFactory.toLiveData()
sebagai alternatif Kotlin untukLivePagedListBuilder
- Menambahkan
DataSourceFactory.toObservable()
dantoFlowable()
sebagai alternatif Kotlin untukRxPagedListBuilder
- Menambahkan
AsyncPagedListDiffer.addPagedListListener()
untuk dipantau ketika PagedList ditukar. b/111698609 - Menambahkan varian
PagedListAdapter.onCurrentListChanged()
yang meneruskan daftar lama dan baru, varian sebelumnya tidak digunakan lagi. - Menambahkan varian
PagedListAdapter/AsyncPagedListDiffer.submitList()
yang mengambil callback tambahan yang terpicu jika/ketika pagedlist ditampilkan, setelah diffing. Ini memungkinkan Anda untuk menyinkronkan swap PagedList dengan update UI lainnya. b/73781068 - Menambahkan
PagedList.getLoadedCount()
untuk memberitahukan banyaknya item dalam memori. Perhatikan bahwa nilai yang ditampilkan selalu sama dengan.size()
jika placeholder dinonaktifkan.
Perbaikan Bug
- Memperbaiki kondisi race saat melakukan diffing jika daftar digunakan kembali b/111591017
PagedList.loadAround()
sekarang menampilkanIndexOutOfBoundsException
saat indeks tidak valid. Sebelumnya, masalah dapat terjadi dengan pengecualian lain yang tidak jelas.- Memperbaiki kasus di mana ukuran pemuatan awal yang sangat kecil bersama dengan data yang tidak berubah tidak akan menghasilkan pemuatan lebih lanjut b/113122599
11 Oktober 2018
WorkManager
WorkManager 1.0.0-alpha10
dirilis dengan dukungan untuk pekerjaan asinkron yang dikendalikan developer. Ada sejumlah perubahan API yang dapat menyebabkan gangguan pada rilis ini; silakan lihat bagian Perubahan API yang Dapat Menyebabkan Gangguan di bawah.
WorkManager sedang memasuki fase akhir periode alfa. Kami berharap WorkManager menjadi API stabil dalam versi beta, jadi harap luangkan waktu untuk mengirimkan masukan Anda pada fitur pelacak masalah kami.
Perubahan API
- Menghapus semua metode dan kelas sebelumnya yang
deprecated
, terutama konstruktorWorker
default. Ini adalah perubahan API yang dapat menyebabkan gangguan. - Mengganti nama
NonBlockingWorker
menjadiListenableWorker
, yang sekarang merupakan kelas publik tak tersembunyi dan siap digunakan.ListenableWorker
menyediakan akses ke satu metode abstrak,ListenableFuture<Payload> onStartWork()
yang dipanggil pada thread utama. Anda bisa menentukan untuk memulai dan memproses pekerjaan secara asinkron. Setelah selesai, Anda harus memperbaruiListenableFuture
dengan benar. Penerapan referensiListenableFuture
disediakan dalam paketFutures
dialpha02
(lihat bagianWorkManager
di bawah ini).Worker
memperluasListenableWorker
dan masih beroperasi seperti sebelumnya, dengan metodeResult doWork()
abstrak.- Mengacak beberapa metode dan anggota dari
Worker
keListenableWorker
. - Kami akan segera menyediakan implementasi referensi untuk
ListenableWorker
yang menggunakan coroutine Kotlin (setelah versi stabil dirilis) dan RxJava2.
- Antarmuka
WorkerFactory
dan implementasi konkretDefaultWorkerFactory
telah digabung menjadi sebuah kelas abstrak yang disebutWorkerFactory
. Implementasi ini memastikan perilaku berbasis refleksi default dipanggil sebagai upaya terakhir untuk setiap instanceWorkerFactory
buatan pengguna. Ini adalah perubahan yang dapat menyebabkan gangguan. - Menghapus
WorkManager.synchronous()
danWorkContinuation.synchronous()
serta semua metode terkait. MenambahkanListenableFuture<Void>
sebagai jenis pengembalian dari banyak metode di API. Ini adalah perubahan API yang dapat menyebabkan gangguan.- Sekarang Anda dapat secara sinkron mendapatkan dan mengamati dengan menggunakan
ListenableFuture
. Misalnya,WorkManager.enqueue()
dulu menampilkanvoid
; sekarang menampilkanListenableFuture<Void>
. Anda dapat memanggilListenableFuture.addListener(Runnable, Executor)
atauListenableFuture.get()
untuk menjalankan kode setelah operasi selesai. - Perhatikan bahwa
ListenableFuture
hanya memberitahukan bahwa operasi selesai, namun tidak memberitahukan apakah operasi berhasil atau gagal. Anda masih perlu merangkai metode WorkManager untuk mencari tahu informasi ini. - Kami mengabaikan panggilan
cancel()
pada objek ini, karena membingungkan dan sulit untuk dibahas (Anda membatalkan operasi atau pekerjaan yang ditimbulkan?). Ini berada dalam kontrakFuture
. - Untuk menjaga paritas dengan metode
getStatus*
sinkron, kami telah menyediakan varianListenableFuture
, dan mengganti nama varian yang sudah ada yang menampilkanLiveData
agar secara eksplisit menampilkan "LiveData" sebagai bagian dari namanya (misalnya,getStatusesByIdLiveData(UUID)
). Ini adalah perubahan API yang dapat menyebabkan gangguan.
- Sekarang Anda dapat secara sinkron mendapatkan dan mengamati dengan menggunakan
Perbaikan Bug
- Memperbaiki masalah umum dari alpha09 terkait file
androidx-annotations.pro
duplikat. Anda dapat menghapus solusi ini dari catatan rilis sebelumnya dengan menghapusexclude 'META-INF/proguard/androidx-annotations.pro'
dari file gradle Anda. - Menambahkan konfigurasi proguard untuk mempertahankan konstruktor
Worker
baru. b/116296569 - Memperbaki potensi
NullPointerException
dalam kondisi race tempat pekerjaan di-REPLACE
(diganti). b/116253486 dan b/116677275 WorkContinuation.combine()
sekarang menerima satu atau beberapaWorkContinuation
, bukan dua atau lebih. b/117266752
Perubahan API yang Dapat Menyebabkan Gangguan
- Menghapus semua metode dan kelas sebelumnya yang
deprecated
, terutama konstruktorWorker
default. - Antarmuka
WorkerFactory
dan implementasi konkretDefaultWorkerFactory
telah digabung menjadi sebuah kelas abstrak yang disebutWorkerFactory
. - Menghapus
WorkManager.synchronous()
danWorkContinuation.synchronous()
. - Metode
WorkManager.getStatus*()
sekarang menampilkanListenableFuture
.WorkManager.getStatus*LiveData()
menampilkanLiveData
.
Futures
Futures 1.0.0-alpha02
telah dirilis.
Perubahan API
- Sekarang developer 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 FTS3 atau FTS4 pemetaan. Kelas yang dianotasi dengan
@Entity
sekarang juga dapat dianotasi dengan@Fts3
atau@Fts4
untuk mendeklarasikan kelas dengan tabel penelusuran teks lengkap pemetaan. Opsi FTS untuk penyesuaian lebih lanjut tersedia melalui metode anotasi. b/62356416 - Tampilan: Room sekarang mendukung deklarasi kelas sebagai kueri tersimpan, yang disebut juga view menggunakan anotasi @DatabaseView. b/67033276
- Nilai Otomatis: Room sekarang mendukung deklarasi kelas beranotasi AutoValue sebagai entitas dan POJOs. Anotasi Room
@PrimaryKey
,@ColumnInfo
,@Embedded
, dan@Relation
sekarang dapat dideklarasikan dalam nilai otomatis yang dianotasi metode abstrak kelas. Pastikan anotasi ini juga disertai@CopyAnnotations
untuk Room guna memahaminya dengan tepat. b/62408420 - Dukungan Jenis Pengembalian Rx Tambahan: Metode DAO yang dianotasi dengan
@Insert
,@Delete
, atau@Update
sekarang mendukung jenis pengembalian RxCompletable
,Single<T>
, danMaybe<T>
. b/63317956 - Jenis Tetap dengan
@Relation
: Room sebelumnya memerlukan kolom@Relation
yang dianotasi agar dapat diatur, tetapi sekarang dapat menjadi parameter konstruktor. enableMultiInstanceInvalidation
: merupakan API baru diRoomDatabase.Builder
untuk mengaktifkan pembatalan beberapa instance RoomDatabase yang menggunakan file database yang sama. Mekanisme pembatalan multi-instance ini juga berlaku pada banyak proses. b/62334005fallbackToDestructiveMigrationOnDowngrade
: merupakan API baru diRoomDatabase.Builder
untuk membuat ulang database secara otomatis jika downgrade terjadi. b/110416954ignoredColumns
: merupakan API baru di anotasi@Entity
yang dapat digunakan untuk mencantumkan kolom yang diabaikan menurut nama. Berguna untuk mengabaikan kolom setelan induk pada suatu entity. b/63522075
Perubahan API / Perilaku
mCallback
danmDatabase
diRoomDatabase
sekarang@Deprecated
(tidak berlaku lagi) dan akan dihapus pada versi utama Room selanjutnya. b/76109329
Perbaikan Bug
- Memperbaiki dua masalah yang membuat Room tidak dapat pulih dengan baik dari database yang rusak atau migrasi yang salah selama inisialisasi. b/111504749 dan b/111519144
- Room sekarang akan menggunakan konstruktor utama Kotlin di kelas data dengan benar, sehingga tidak perlu mendeklarasikan kolom sebagai
vars
. b/105769985
1 Oktober 2018
Room 2.0.0
dirilis tanpa perubahan dari 2.0.0-rc01
.
Paging 2.0.0
dirilis dengan perbaikan bug tunggal.
Paging
Perbaikan Bug
- Memperbaiki masalah yang dapat terjadi pada scroll sangat cepat menggunakan
PositionalDataSource
dan placeholder b/114635383.
21 September 2018
Lifecycle 2.0.0
dirilis dengan satu perbaikan bug dari 2.0.0-rc01
di ViewModel.
Lifecycle
Perbaikan Bug
- Memperbaiki aturan proguard ViewModel yang salah menghapus konstruktor b/112230489
20 September 2018
Navigation
Navigation 1.0.0-alpha06
dirilis dengan perbaikan bug dan perubahan API.
Fitur Baru
- Transisi Elemen Bersama untuk tujuan Fragmen dan Aktivitas sekarang didukung b/79665225. Untuk informasi lebih lanjut, lihat Menerapkan navigasi dengan Komponen Arsitektur Navigation
- Memilih item di
NavigationView
sekarang akan menutup semua sheet bawah yang berisi b/112158843
Perubahan API
- Perubahan yang Dapat Menyebabkan Gangguan: Metode
navigate()
Navigator sekarang menerima parameterNavigator.Extras
. - Metode
getGraph()
NavController sekarangNonNull
b/112243286
Perbaikan Bug
NavigationUI.setupWithNavController()
tidak lagi merupakan tampilan bocoran jika digunakan dengan tampilan dari masing-masing tujuan b/111961977- Navigator
onSaveState()
sekarang hanya dipanggil sekali b/112627079
Safe Arg
- Kelas Direction tujuan navigasi sekarang memperluas kelas Direction induknya jika ada b/79871405
- Kelas Direction dan Arg sekarang memiliki implementasi
toString()
yang berguna b/111843389
19 September 2018
WorkManager
WorkManager 1.0.0-alpha09
dirilis dengan perbaikan bug, pembaruan infrastruktur, dan perubahan API.
Masalah Umum
Jika Anda mengalami masalah berikut: "Lebih dari satu file ditemukan dengan lokasi independen OS 'META-INF/proguard/androidx-annotations.pro'", harap cantumkan berikut ini dalam file gradle sebagai solusi sementara selagi kami memperbaiki masalah di alpha10:
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
}
Perbaikan Bug
- Menambahkan perbaikan lain yang diperlukan untuk error "100 pekerjaan". b/115560696
- Menambahkan beberapa perbaikan untuk error pembatas kunci asing karena kondisi race. b/114705286
- Mendelegasikan panggilan
ConstraintTrackingWorker.onStopped(boolean)
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 deduping
LiveData
secara internal.
Perubahan API
- Sekarang Anda dapat membuat instance
Worker
Anda sendiri saat waktu proses dengan menentukanWorkerFactory
sebagai bagian dariWorkManager.Configuration
. Factory fallback adalahDefaultWorkerFactory
, yang cocok dengan perilaku versi WorkManager sebelumnya.- Konstruktor default untuk
Worker
danNonBlockingWorker
sekarang ditandai sebagai tidak digunakan lagi. Harap gunakan konstruktor baru (Worker(Context, WorkerParameters)
) dan panggilsuper(Context, WorkerParameters)
; versi WorkManager yang akan datang akan menghapus konstruktor default.
- Konstruktor default untuk
- Kami telah mulai menggunakan artefak
ListenableFuture
baru secara internal (bebas dari dependensi Guava). Kami akan memperkenalkan ListenableFutures ke API dalam rilis mendatang. Perubahan ini akan mendukung diperlihatkannyaNonBlockingWorker
. - Menambahkan kemampuan untuk memicu pekerjaan dibatasi waktu di
TestDriver
melaluiTestDriver.setInitialDelayMet(UUID)
danTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Perubahan yang Dapat Menyebabkan Gangguan
- Konstruktor
Worker
danNonBlockingWorker
default tidak digunakan lagi. Silakan bermigrasi ke konstruktor baru sesegera mungkin. Versi yang akan datang akan menghapus konstruktor default.
27 Agustus 2018
WorkManager
WorkManager 1.0.0-alpha08
dirilis dengan perbaikan bug.
Perbaikan Bug
- Melabeli dengan jelas komponen WorkManager sebagai tidak berbasis booting langsung, sehingga tidak diaktifkan selama booting langsung. Di masa mendatang, kami akan menyediakan versi WorkManager yang berbasis booting langsung. b/112665532
- Memperbaiki masalah di mana pekerjaan yang dicoba lagi tidak berjalan. b/112604021
- Memperbaiki pekerjaan berkala yang tidak berjalan secara berulang (terkait dengan masalah di atas). b/112859683
- Mengikuti kebijakan backoff saat proses aplikasi sudah berjalan.
- Pesan pengecualian yang dikoreksi dalam
Data
untuk menunjukkan batasnya adalah 10 KB. - Menurunkan nilai maksimum
Configuration.setMaxSchedulerLimit(int)
menjadi 50 untuk memperhitungkan latensi dalam penyelesaian prosesJobScheduler
. b/112817355
16 Agustus 2018
WorkManager
WorkManager 1.0.0-alpha07
dirilis dengan perbaikan bug dan perubahan kecil pada API.
Perbaikan Bug
- Memperbaiki potensi kueri SQL dengan batas negatif yang dapat mengembalikan jumlah hasil yang tidak terbatas.
- Pekerjaan yang telah menyelesaikan eksekusi sekarang dapat dengan tepat membatalkan semua salinan dari pekerjaan tersebut yang tertunda di Penjadwal lainnya. Ini menyebabkan batas pekerjaan
JobScheduler
terlampaui. b/111569265 - Memperbaiki
ConcurrentModificationException
diConstraintTracker
. b/112272753 - Mengubah anotasi jenis pengembalian
Data.getBooleanArray(String)
danData.getIntArray(String)
menjadi@Nullable
, bukan@NonNull
. b/112275229
Perubahan API
Worker
sekarang memperluas kelas baru,NonBlockingWorker
. Ini tidak memengaruhi penggunaan saat ini. Di masa mendatang,NonBlockingWorker
akan menjadi entitas yang sepenuhnya didukung untuk solusi rangkaian khusus.- Mengubah anotasi jenis pengembalian
Data.getBooleanArray(String)
danData.getIntArray(String)
menjadi@Nullable
, bukan@NonNull
. b/112275229 - Ekstensi Kotlin:
Map.toWorkData()
tidak digunakan lagi danworkDataOf(vararg Pair<String, Any?>)
level teratas ditambahkan agar lebih konsisten dengan API yang sudah ada.
10 Agustus 2018
Navigation
Navigation 1.0.0-alpha05
dirilis dengan perbaikan bug.
Perbaikan Bug
- Memperbaiki bug yang menyebabkan perilaku backstack yang salah. b/111907708
- Memperbaiki bug di
equals()
kelas Generated Arg. b/111450897 - Memperbaiki kegagalan pembuatan di Safe Arg. b/109409713
- Memperbaiki konversi dari pengenal resource ke nama java b/111602491
- Memperbaiki pesan error tentang nullability di plugin Safe Arg.
- Menambahkan anotasi nullability yang hilang.
6 Agustus 2018
Versi AndroidX dari Lifecycle, Room, dan Paging merilis versi 2.0.0-rc01
. Semua artefak tidak diubah dari 2.0.0-beta01
.
1 Agustus 2018
WorkManager
WorkManager 1.0.0-alpha06
dirilis dengan perbaikan bug.
Perbaikan Bug
- Mencegah penguncian database saat menjadwalkan pekerjaan. b/111801342
- Memperbaiki bug yang menyebabkan
PeriodicWork
tidak berjalan sesuai jadwal saat berada dalam mode Istirahatkan. b/111469837 - Memperbaiki kondisi race saat melacak batasan yang menyebabkan
WorkManager
mengalami error. googlecodelabs/android-workmanager/issues/56 - Membuat
WorkRequest
unik ketika menggunakanWorkRequest.Builder#build()
. b/111408337 - Mengaktifkan penggunaan
RescheduleReceiver
hanya ketika adaWorkRequest
yang membutuhkannya. b/111765853
24 Juli 2018
WorkManager
WorkManager 1.0.0-alpha05
dirilis dengan perbaikan bug penting dan perubahan logging.
Perubahan API
WorkManager.getInstance()
sekarang dianotasi dengan@NonNull
bukan@Nullable
. Sebaliknya, jika singleton tidak diinisialisasi dengan benar dalam kasus inisialisasi manual, metode ini akan melontarkanIllegalStateException
. Ini adalah perubahan API yang dapat menyebabkan gangguan pada versi saat ini.- Menambahkan API baru,
Configuration.Builder.setMinimumLoggingLevel(int)
, yang dapat mengontrol verbositas WorkManager. Secara default, WorkManager mencatatLog.INFO
dan versi di atasnya ke dalam log. - Mengubah tanda tangan
Data.getString()
sehingga tidak lagi mengambil nilai default (secara implisitnull
). Ini adalah perubahan API yang dapat menyebabkan gangguan. - Menandai beberapa metode yang dibutuhkan hanya untuk penggunaan internal sebagai
@hide
. Penandaan termasuk konstruktorConstraints
,Data.toByteArray()
, danData.fromByteArray(byte[])
. Ini adalah perubahan API yang dapat menyebabkan gangguan.
Perbaikan Bug
- WorkManager tidak lagi bekerja selama kasus backup otomatis yang diketahui. Ini bisa mengakibatkan error. b/110564377
- Memperbaiki penjadwalan ganda
PeriodicWorkRequest
saat menggunakanJobScheduler
. b/110798652 - Memperbaiki masalah
PeriodicWorkRequest
yang tidak bekerja dengan benar setelah perangkat diistirahatkan. b/111469837 - Memperbaiki masalah dengan penundaan awal saat menggunakan Firebase JobDispatcher. b/111141023
- Memperbaiki beberapa potensi kondisi race dan masalah pengaturan waktu.
- Mengosongkan
BroadcastReceiver
yang tidak diperlukan lagi dengan tepat. - Mengoptimalkan kinerja penjadwalan ulang saat aplikasi memulai ulang setelah ditutup paksa.
- Mengizinkan
TestScheduler.setAllConstraintsMet(UUID)
dipanggil sebelum atau setelah mengantreWorkRequest
yang ditentukan. b/111238024
Perubahan yang Dapat Menyebabkan Gangguan
WorkManager.getInstance()
sekarang dianotasi dengan@NonNull
bukan@Nullable
.- Mengubah tanda tangan
Data.getString()
sehingga tidak lagi mengambil nilai default (secara implisitnull
). - Menandai beberapa metode yang dibutuhkan hanya untuk penggunaan internal sebagai
@hide
. Penandaan termasuk konstruktorConstraints
,Data.toByteArray()
, danData.fromByteArray(byte[])
.
19 Juli 2018
Navigation
Navigation 1.0.0-alpha04
dan plugin gradle Safe Arg yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.
Perubahan API / Perilaku
- NavHostFragment akan selalu mengatur Fragmen saat ini sebagai fragmen navigasi utama, memastikan bahwa pengelola fragmen turunan muncul sebelum NavController luar muncul b/111345778
Safe Arg
- Perubahan yang Dapat Menyebabkan Gangguan:
app:type
telah diubah menjadiapp:argType
untuk menghindari konflik dengan library lain seperti ConstraintLayout 2.0.0-alpha1 b/111110548 - Pesan errror dari Safe Arg sekarang dapat diklik b/111534438
- Kelas Arg sekarang menegaskan bahwa atribut
NonNull
sebenarnya bukan null b/111451769 - Anotasi
NonNull
tambahan telah ditambahkan ke NavDirection dan kelas yang dihasilkan Arg b/111455455 b/111455456
Perbaikan Bug
- Memperbaiki masalah dengan tombol kembali di sistem setelah deep linking ke tujuan fragmen b/111515685
12 Juli 2018
Navigation
Navigation 1.0.0-alpha03
dan plugin gradle Safe Arg yang terkait berisi sejumlah perubahan API, perubahan perilaku, dan perbaikan bug.
Perubahan API / Perilaku
- Metode NavigationUI.setupWithNavController untuk Toolbar telah ditambahkan b/109868820
- Metode NavigationUI.setupWithNavController untuk CollapsingToolbarLayout telah ditambahkan b/110887183
- popBackStack () sekarang mengembalikan nilai salah ketika back stack kosong atau ketika ID tujuan yang diberikan tidak ada di back stack b/110893637
- FragmentNavigator sekarang mengabaikan operasi navigasi setelah FragmentManager menyimpan status, menghindari pengecualian "Tidak dapat melakukan tindakan ini setelah onSaveInstanceState" b/110987825
Safe Arg
- Perubahan yang Dapat Menyebabkan Gangguan: Karakter non-alfanumerik dalam nama aksi dan argumen akan diganti dengan camel casing di setiap nama metode NavDirections
- Misalnya
DemoController.index
akan menjadisetDemoControllerIndex
b/79995048 - Misalnya
action_show_settings
akan menjadiactionShowSettings
b/79642240
- Misalnya
- Perubahan yang Dapat Menyebabkan Gangguan: Argumen sekarang dianggap bukan null secara default. Untuk mengizinkan nilai null pada argumen string dan parcelable, tambahkan
app:nullable="true"
b/79642307 - Anda sekarang dapat menggunakan
app:type="long"
dengan defaultValues dalam format "123L" b/79563966 - Argumen parcelable sekarang didukung, menggunakan nama kelas yang memenuhi syarat untuk
app:type
. Satu-satunya nilai default yang didukung adalah"@null"
b/79563966 - Kelas Arg sekarang mengimplementasikan
equals()
danhashCode()
b/79642246 - Plugin Safe Arg sekarang dapat diterapkan ke proyek library b/80036553
- Plugin Safe Arg sekarang dapat diterapkan ke proyek fitur b/110011752
Perbaikan Bug
- Memperbaiki masalah saat menavigasi selama metode siklus proses Fragmen b/109916080
- Memperbaiki masalah saat menavigasi melalui grafik bersarang beberapa kali b/110178671
- Memperbaiki masalah saat menggunakan
setPopUpTo
dengan tujuan pertama pada grafik b/109909461 - Memperbaiki masalah di mana semua nilai
app:defaultValue
diteruskan sebagai String b/110710788 - aapt2 yang dipaketkan dengan Plugin Android Gradle 3.2 Beta 01 sekarang menambahkan aturan penyimpanan untuk setiap atribut
android:name
dalam file XML Navigation b/79874119 - Memperbaiki kebocoran memori saat mengganti FragmentNavigator default b/110900142
2 Juli 2018
Versi AndroidX dari Lifecycle, Room, dan Paging merilis versi 2.0.0-beta01
.
Lifecycle
Perbaikan Bug
- Memperbaiki aturan proguard LifecycleObserver untuk menyimpan hanya implementasi, bukan sub-antarmuka b/71389427
- Memperbaiki aturan proguard ViewModel untuk memungkinkan obfuscation dan penciutan
Room
Perubahan API / Perilaku
- Menambahkan
RoomDatabase.Builder.setQueryExecutor()
untuk mengizinkan penyesuaian tempat kueri dijalankan - Menambahkan dukungan RxJava2
Observable
- Implementasi DAO dan Database yang dihasilkan sekarang sudah final
Perbaikan Bug
- Menentukan nama kelas/kolom di error "tidak dapat menemukan getter untuk kolom" b/73334503
- Memperbaiki kompatibilitas mundur RoomOpenHelper dengan versi Room yang lebih lama b/110197391
Paging
Perbaikan Bug
- Memperbaiki konten yang hilang dalam beberapa kasus tambahan (placeholder dinonaktifkan, PositionalDataSource) b/80149146
- (Sudah dirilis di
1.0.1
) Memperbaiki error di manaPagedListAdapter
danAsyncPagedListDiffer
gagal untuk memberi sinyal peristiwa pemindahan. b/110711937
26 Juni 2018
Paging
Paging 1.0.1
dirilis dengan perbaikan bug tunggal pada runtime
. Kami sangat menyarankan menggunakan 1.0.1
untuk stabilitas. Paging RxJava2 1.0.1
juga dirilis, dan identik dengan 1.0.0-rc1
.
Perbaikan Bug
- Memperbaiki error di mana
PagedListAdapter
danAsyncPagedListDiffer
gagal untuk memberi sinyal peristiwa pemindahan. b/110711937
WorkManager
WorkManager 1.0.0-alpha04
dirilis.
Perbaikan Bug
PeriodicWorkRequest
sekarang dijadwal ulang dengan benar saat menggunakan implementasi berbasisAlarmManager
.Memperbaiki potensi ANR saat menjadwal ulang semua worker setelah penghentian paksa atau reboot. b/110507716
Menambahkan anotasi nullability ke berbagai WorkManager API. b/110344065
Mencatat pengecualian yang tidak tertangkap yang terjadi selama eksekusi Worker. b/109900862
Memungkinkan migrasi database destruktif jika Anda memutuskan untuk kembali ke versi WorkManager yang lebih lama. b/74633270
Memperbaiki error migrasi jika membuat tag implisit duplikat. Ini adalah masalah yang sangat langka yang terjadi hanya jika Anda menggunakan format tag implisit yang sama.
19 Juni 2018
Room
Room 1.1.1
dirilis. Rilis ini identik dengan Room 1.1.1-rc1
.
WorkManager
WorkManager 1.0.0-alpha03
dirilis.
Perbaikan Bug
Memperbaiki kondisi race pada implementasi berbasis
AlarmManager
. b/80346526.Memperbaiki pekerjaan duplikat saat menggunakan
JobScheduler
setelah reboot perangkat.Pekerjaan dengan pemicu Konten URI sekarang bertahan di seluruh reboot. b/80234744
Pembaruan dokumentasi. b/109827628, b/109758949, b/80230748
Memperbaiki error saat mengantre ulang
WorkRequest
. b/109572353.Memperbaiki peringatan compiler Kotlin saat menggunakan dependensi
work-runtime-ktx
.WorkManager saat ini menggunakan
Room
versi1.1.1-rc1
.
Perubahan API
Menambahkan
getStatusesSync()
, versi sinkron dariWorkContinuation.getStatuses()
.Worker
memiliki kemampuan untuk membedakan antara pembatalan yang dimulai oleh pengguna dan penghentian sementara yang diminta oleh os.Worker.isStopped()
mengembalikan nilaitrue
jika segala jenis penghentian telah diminta.Worker.isCancelled()
menampilkan nilaitrue
ketika pekerjaan telah secara eksplisit dibatalkan. b/79632247Menambahkan dukungan untuk JobParameters#getNetwork() pada API 28. Ini diekspos melalui
Worker.getNetwork()
.Menambahkan
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
sehingga Anda dapat memberlakukan jumlah pekerjaan yang dapat dikirim keJobScheduler
atauAlarmManager
. Ini membantu mencegahWorkManager
mengambil semua slotJobScheduler
tersedia.Menambahkan
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
yang membantu menentukan rentang ID pekerjaanJobScheduler
yang aman untuk digunakanWorkManager
. b/79996760Worker.getRunAttemptCount()
menampilkan penghitungan berjalan saat ini untukWorker
tertentu. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
memungkinkan Anda untuk mengantrePeriodicWorkRequest
unik. b/79600647WorkManager.cancelAllWork()
membatalkan semuaWorker
. Library yang bergantung padaWorkManager
dapat mengueri kapan metode ini dipanggil terakhir dengan menggunakanWorkManager.getLastCancelAllTimeMillis()
untuk pembersihan tambahan status internal.Menambahkan
WorkManager.pruneWork()
untuk menghapus pekerjaan yang sudah selesai dari database internal. b/79950952, b/109710758
Perubahan Perilaku
- Menambahkan tag implisit untuk semua
WorkRequest
, yang merupakan nama kelas yang sepenuhnya memenuhi syarat untukWorker
. Ini memberikan kemampuan untuk menghapusWorkRequest
tanpatag
atau ketikaid
tidak tersedia. b/109572351
Perubahan yang Dapat Menyebabkan Gangguan
Mengganti nama
Worker.WorkerResult
menjadiWorker.Result
.Worker.onStopped
sekarang memiliki parameter tambahanisCancelled
yang disetel ketrue
ketikaWorker
telah secara eksplisit dibatalkan.
7 Juni 2018
Navigation 1.0.0-alpha02
dirilis.
Navigation
Perubahan Perilaku
FragmentNavigator
sekarang menggunakansetReorderingAllowed(true)
. b/109826220Navigation sekarang melakukan argumen URLDecode yang diurai dari URL deep link. b/79982454
Perbaikan Bug
Memperbaiki
IllegalStateException
saat memanggil navigasi dari metode siklus proses Fragmen. b/79632233Navigation sekarang bergantung pada Library Dukungan 27.1.1 untuk memperbaiki kedipan saat menggunakan animasi. b/80160903
Memperbaiki
IllegalArgumentException
saat menggunakan defaultNavHost="true" sebagai fragmen turunan. b/79656847Memperbaiki
StackOverflowError
saat menggunakan NavDeepLinkBuilder. b/109653065Memperbaiki
IllegalArgumentException
saat menavigasi kembali ke grafik bersarang. b/80453447Memperbaiki masalah Fragmen yang tumpang tindih saat menggunakan
launchSingleTop
. b/79407969Navigation sekarang membuat back stack sintetis yang benar untuk grafik bersarang. b/79734195
NavigationUI sekarang akan menyorot item yang benar ketika grafik bersarang digunakan sebagai
MenuItem
. b/109675998
Perubahan API
Atribut
clearTask
untuk tindakan dan API terkait padaNavOptions
sudah tidak digunakan lagi. b/80338878Atribut
launchDocument
untuk tindakan dan API terkait padaNavOptions
sudah tidak digunakan lagi. b/109806636
24 Mei 2018
WorkManager 1.0.0-alpha02
dirilis.
WorkManager
Perbaikan Bug
Memperbaiki
NullPointerException
diState.isFinished()
. b/79550068Memperbaiki masalah yang menyebabkan
Worker
harus dijadwal ulang diApplication.onCreate()
. b/79660657Memperbaiki masalah di mana Anda dapat menjadwalkan lebih banyak pekerjaan daripada yang diizinkan oleh OS. b/79497378
Memindahkan pembersihan penguncian layar saat aktif yang terkait dengan
Worker
ke thread latar belakang.Implementasi
AlarmManager
sekarang membersihkan dengan benar saat semua pekerjaan yang tertunda selesai.Memperbaiki kueri SQL pembersihan yang memengaruhi bahasa non-Inggris. b/80065360
Menambahkan dukungan untuk
float
diData
. b/79443878Data.Builder.putAll()
sekarang 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.API
Worker.getTags()
mengembalikan satuSet
tag yang terkait denganWorker
.Menambahkan kelebihan beban
javax.time.Duration
untuk API yang menggunakan kombinasi durasi danTimeUnit
. Ini dijaga oleh@RequiresApi(26)
.Ekstensi
WorkManager
telah dipindahkan dari paketandroidx.work.ktx
ke paketandroix.work
. Ekstensi lama tidak lagi digunakan dan akan dihapus dalam versi yang akan datang.Configuration.withExecutor()
tidak digunakan lagi. GunakanConfiguration.setExecutor()
sebagai gantinya.
16 Mei 2018
Paging RxJava2 1.0.0-rc1
dan Room 1.1.1-rc1
dirilis. Kami sangat menyarankan menggunakan Room 1.1.1-rc1
sebagai ganti 1.1.0
jika Anda sedang menggunakan migrasi.
Room
Memperbaiki bug di mana Room tidak akan menangani inisialisasi migrasi post dengan benar b/79362399
Paging
Paging rxjava2
berpindah ke kandidat rilis tanpa perubahan dari versi alfa awal.
8 Mei 2018
Paging 1.0, Navigation, dan WorkManager Alfa, Room 1.1, AndroidX
Paging 1.0.0
dan Room 1.1.0
dirilis, bersama dengan versi alfa untuk dua Komponen Arsitektur baru - Navigation dan WorkManager.
Tidak ada perubahan pada Paging dan Room sejak kandidat rilis terbaru.
Library Baru: Navigation
Navigation menyediakan kerangka kerja untuk membuat navigasi dalam aplikasi. Rilis awal ini adalah 1.0.0-alpha01
.
Library Baru: WorkManager
WorkManager menyederhanakan penjadwalan dan pelaksanaan pekerjaan latar belakang yang terjamin dan berbasis pembatas. Rilis awal ini adalah 1.0.0-alpha01
.
AndroidX
Komponen arsitektur berpindah menjadi bagian dari AndroidX, termasuk nama paket yang diupdate, nama artefak, dan dependensi pada library AndroidX lainnya.
Semua ini dirilis pada versi 2.0.0-alpha1
untuk digunakan bersama dengan library AndroidX lainnya.
Ekstensi Kotlin
ViewModel, ReactiveStreams, dan Sqlite (sebelumnya komponen 'Database' Room) semua memiliki library ekstensi Kotlin yang ditambahkan sebagai bagian dari rilis alfa AndroidX. Selain itu, Navigation dan WorkManager menyertakan modul -ktx. Masing-masing modul ekstensi ini dapat ditemukan dalam menambahkan komponen.
2 Mei 2018
- Kandidat Rilis Room 1.1.0
- Room
1.1.0-rc1
dirilis.
Perbaikan Bug
- Room sekarang kompatibel dengan Kotlin
1.2.40
. b/78328708
19 April 2018
Kandidat Rilis Paging
Paging 1.0.0-rc1
dan Room 1.1.0-beta3
dirilis.
Paging
Kami tidak memiliki masalah umum atau fitur baru lagi yang dijadwalkan untuk rilis Paging 1.0.0
. Harap update proyek Anda untuk menggunakan 1.0.0-rc1
dan bantu kami untuk melakukan uji tanding sehingga kami dapat merilis 1.0.0
yang solid.
Tidak ada perubahan dalam rilis ini, sama dengan 1.0.0-beta1
.
Room
Perbaikan Bug
- Memperbaiki error kompilasi saat POJO Kotlin mereferensi entitas relasi yang didefinisikan di Java b/78199923
5 April 2018
Room 1.1.0-beta2
, Paging 1.0.0-beta1
, dan Paging RxJava 1.0.0-alpha1
dirilis.
Paging akan berada dalam vesi beta untuk waktu yang singkat sebelum menjadi kandidat rilis.
Kami tidak merencanakan perubahan API lebih lanjut untuk Paging 1.0
, dan batasan untuk setiap perubahan API sangat tinggi.
Dukungan Alfa RxJava2 untuk Paging dirilis sebagai modul opsional terpisah (android.arch.paging:rxjava2:1.0.0-alpha1
) dan akan diberi versi sementara secara terpisah sampai stabil.
Library baru ini menyediakan alternatif RxJava2 untuk LivePagedListBuilder
, yang mampu membangun sistem Observable
dan Flowable
, mengambil Scheduler
sebagai pengganti Executor
:
Observable<PagedList<Item>> pagedItems =
RxPagedListBuilder(myDataSource, /* page size */ 50)
.setFetchScheduler(myNetworkScheduler)
.buildObservable();
Paging
Fitur Baru
RxPagedListBuilder
ditambahkan melalui artefakandroid.arch.paging:rxjava2
.
Perubahan API
Perubahan API untuk memperjelas peran pelaksana dalam pembuat:
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 pelaksana yang ditentukan, sebagai ganti pool thread IO Komponen Arch.Memperbaiki perilaku pembatalan pada wrapper
DataSource
internal (yang digunakan untuk mengimplementasikanDataSource.map
, serta pemuatanPositionalDataSource
yang dinonaktifkan placeholder) b/77237534
Room
Perbaikan Bug
Memperbaiki bug penting di Rx
Single
Room dan implementasiMaybe
di mana ini akan mendaur ulang kueri lebih dini, yang menyebabkan masalah jika Anda menambahkan lebih dari 1 pengamat ke instanceSingle
atauMaybe
yang dikembalikan. 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 perlu menggunakan SupportSQLiteQuery. (Lihat SimpleSQLiteQuery untuk membuat dengan mudah instance SupportSQLiteQuery dengan dukungan argumen). - Metode fallbackToDestructiveMigrationFrom RoomDatabase.Builder sekarang menerima
vararg int
, bukanvararg Integer
.
Perbaikan Bug
RoomDatabase.clearAllTables sekarang mencoba mengembalikan ruang kembali ke sistem operasi dengan menyetel checkpoint WAL dan melakukan
VACUUM
database.@RawQuery
sekarang menerima Pojo untuk propertiobservedEntities
selama Pojo merujuk ke satu atau lebih entity melalui kolomEmbedded
atauRelation
. b/74041772Paging: Implementasi DataSource Room sekarang menangani dependensi multi-tabel dengan benar (seperti hubungan dan gabungan). Sebelumnya penangangan akan untuk memicu hasil baru, atau gagal mengompilasi. b/74128314
Lifecycle
Hanya satu perubahan kecil: android.arch.core.util.Function
dipindahkan dari arch:runtime
ke arch:common
. Pemindahan ini memungkinkan android.arch.core.util.Function untuk digunakan tanpa dependensi runtime, misalnya dalam paging:common
di bawah ini.
lifecycle:common
adalah dependensi lifecycle:runtime
, sehingga perubahan ini tidak memengaruhi lifecycle:runtime
secara langsung, hanya modul yang bergantung langsung pada lifecycle:common
, seperti Paging.
Paging
Paging 1.0.0-alpha7
dirilis bersamaan dengan Lifecycle 1.1.1
. Karena Paging alpha7 bergantung pada pemindahan kelas Function
sebagaimana disebutkan di atas, Anda harus mengupdate dependensi lifecycle:runtime
Anda ke android.arch.lifecycle:runtime:1.1.1
.
Paging alpha7
direncanakan menjadi rilis final sebelum Paging mencapai beta.
Perubahan API
- Objek
DataSource.LoadParams
kini memiliki konstruktor publik dan objekDataSource.LoadCallback
sekarang abstrak. Ini memungkinkan untuk menggabungkanDataSource
atau langsung mengujiDataSource
dengan callback palsu. b/72600421 - Pemetaan untuk DataSource dan DataSource.Factory
map(Function<IN,OUT>)
memungkinkan Anda untuk mentransformasi, menggabungkan, atau mendekorasi hasil yang dimuat olehDataSource
.mapByPage(<List<IN>,List<OUT>>)
memungkinkan hal yang sama untuk pemrosesan batch (misalnya, jika item yang dimuat dari SQL perlu mengueri tambahan database terpisah, yang dapat dilakukan secara batch.)
PagedList#getDataSource()
ditambahkan sebagai metode kenyamanan b/72611341- Semua kelas yang tidak lagi digunakan telah dihapus dari API, termasuk sisa paket
recyclerview.extensions
danLivePagedListProvider
. DataSource.Factory
diubah dari antarmuka menjadi kelas abstrak guna memungkinkan fungsi pemetaan.
Perbaikan Bug
- Mengubah Pembuat menjadi final. b/70848565
- Implementasi
DataSource
Room sekarang tetap untuk menangani kueri multi-tabel - perbaikan ini disertakan pada Room 1.1.0-beta1, lihat di atas. - Memperbaiki bug di mana
BoundaryCallback.onItemAtEndLoaded
tidak akan dipanggil untukPositionalDataSource
jika placeholder diaktifkan dan ukuran total merupakan kelipatan yang tepat dari ukuran halaman.
2 Maret 2018
Room 1.1.0-alpha3
dirilis. Ini adalah rilis alfa terakhir yang direncanakan untuk Room 1.1.0
.
Perubahan API
Metode
addObserver
danremoveObserver
InvalidationTracker sekarang sinkron dan perlu dipanggil pada thread non-ui. Perubahan ini mencegah beberapa kondisi race saat mengamati tabel.Ada metode
clearAllTables()
baru pada kelas RoomDatabase yang akan memotong semua isi tabel. b/63807999SupportSQLiteQuery
sekarang memiliki metodegetArgCount()
yang mengembalikan jumlah parameter kueri. b/67038952
Perbaikan Bug
@RawQuery
sekarang didukung dengan benar untuk kueri Paging. b/72600425Room sekarang memberi nama kelas
Dao
yang dihasilkan dengan benar untuk menghindari konflik saat 2 atau lebih antarmukaDao
adalah kelas dalam di paket yang sama dan memiliki nama yang sama. b/73536380Jenis kolom umum di
Pojo
telah diurai dengan benar sebagai anggota kelas yang diperluas. b/73534868Parameter kueri dalam antarmuka
Dao
yang diwarisi dari artefak dependensi sekarang diurai dengan benar. b/68118746Kueri yang dihasilkan untuk
@Relation
sekarang mengawali nama kolom dengan benar. b/70925483
27 Februari 2018
Paging 1.0.0-alpha6
dirilis bersamaan dengan rilis Library Dukungan 27.1.0.
ListAdapter
dan beberapa kelas terkait telah dipindahkan dari Library Paging secara langsung ke Recyclerview, bersama beberapa nama untuk membuat fungsi kelas tertentu lebih jelas. Rilis alfa paging ini kemungkinan besar merupakan rilis terakhir yang memiliki perubahan API signifikan yang dapat mengganggu.
Perubahan API
- Kelas yang dipindahkan ke recyclerview-v7:
ListAdapter
- Kelas yang diganti namanya, dan yang dipindahkan ke recyclerview-v7:
ListAdapterHelper
->AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
->DiffUtil.ItemCallback
- Kelas yang diganti namanya di dalam runtime-paging:
PagedListAdapterHelper
->AsyncPagedListDiffer
Kelas-kelas yang dipindahkan berguna bersama RecyclerView, independen dari Library Paging. Ini berarti mereka dapat digunakan tanpa bergantung pada rilis alfa Paging, tetapi juga berarti aplikasi yang menggunakan Paging harus di-upgrade ke Alfa 6 dan Library Dukungan 27.1.0 secara bersamaan.
** Panduan migrasi untuk Paging Alpha6: **
- Perbarui dependensi paging dan recyclerview ke
android.arch.paging:runtime:1.0.0-alpha6
dancom.android.support:recyclerview-v7:27.1.0
- ini harus dilakukan secara bersamaan, selagi ListAdapter dipindahkan dari Paging ke RecyclerView
- Perbarui semua referensi
ListAdapterHelper
keAsyncListDiffer
.getItem(index)
/getItemCount()
telah dihapus, mendukung 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()
- diganti namanya untuk memperjelas sifat asinkron diffing daftar
Perbaikan Bug
- Memperbaiki penerusan posisi awal yang salah ke pemuatan awal saat placeholder dinonaktifkan. b/73513780
15 Februari 2018
Room 1.1.0-alpha2
dirilis.
Fitur Baru
Room sekarang mendukung pembukaan database dalam mode penulisan sebelum logging. Dalam mode ini, tulisan Anda tidak akan lagi memblokir kueri baca. Meskipun menghabiskan lebih banyak memori (karena banyaknya koneksi), mode ini biasanya lebih cepat. Secara default, Room akan menggunakan WAL jika perangkatnya menjalankan
API 16
atau yang lebih tinggi dan bukan perangkat memori rendah. Anda dapat mengontrol perilaku ini menggunakan metodesetJournalMode()
padaRoomDatabase.Builder
. b/67757002Dukungan Guava: Room sekarang mendukung ditampilkannya Guava
Optional<T>
atauListenableFuture<T>
di kueriDAO
. Untuk menggunakanListenableFuture<T>
, Anda perlu mengimpor artefakguava
dari Room (android.arch.persistence.room:guava:1.1.0-alpha2
).Room sekarang mendukung ditampilkannya
java.util.Optional<T>
dari kueriDAO
.Metode antarmuka dengan implementasi default sekarang didukung di metode
@Transaction
di kelasDAO
. Ini berfungsi untukJava 8
danKotlin
. b/72416735
Perbaikan Bug
Konstruktor dengan
@Relation
tidak akan menyebabkan error kompilasi jika ada konstruktor lain yang dapat digunakan. b/72884434Nama tabel yang diawali dengan
'
dalam metode@Query
sekarang diawali dengan benar untuk pelacak pembatalan. b/72366965Room sekarang menggunakan anotasi
@Metadata
Kotlin untuk membaca struktur kelas selama pemrosesan anotasi. Ini berarti, meski pojo diwariskan dari dependensi, nama parameter konstruktornya dapat dibaca dengan benar. b/67181813Masalah saat menemukan jalur migrasi downgrade sudah diperbaiki. b/72153525
Jenis kolom non-default sekarang ditangani dengan benar ketika bermigrasi dari database yang ada ke Room. b/71953987
Room sekarang menangani kolom
boolean?
yang bertahan di kelas Kotlin dengan benar. b/72786402
22 Januari 2018
Lifecycle 1.1.0
, Room 1.1.0-alpha1
dan Paging 1.0.0-alpha5
dirilis.
Lifecycle 1.1.0
Perubahan Paket
Dependensi baru yang jauh lebih kecil sekarang tersedia:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Perubahan API
LifecycleActivity
danLifecycleFragment
yang sudah tidak digunakan lagi telah dihapus - harap gunakanFragmentActivity
,AppCompatActivity
, atauFragment
dukungan.- Anotasi
@NonNull
telah ditambahkan keViewModelProviders
danViewModelStores
- Konstruktor
ViewModelProviders
telah ditinggalkan - 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
untuk menerima SQL sebagai parameter kueri b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: API baru diRoomDatabase..Builder
ini memungkinkan kontrol yang lebih halus atas migrasi destruktif versi skema awal yang diizinkan (dibandingkan dengan fallbackToDestructiveMigration b/64989640- Room sekarang hanya mendukung API Paging yang lebih baru (alpha-4+), yang melepaskan dukungan untuk
LivePagedListProvider
yang tidak digunakan lagi. Untuk menggunakan alfa Room yang baru, Anda harus menggunakan pagingalpha-4
atau lebih tinggi dan beralih dariLivePagedListProvider
keLivePagedListBuilder
jika Anda belum melakukannya.
Perbaikan Bug
- Peningkatan dukungan untuk jenis Kotlin Kapt. b/69164099
- Urutan kolom tidak membatalkan skema lagi. b/64290754
Paging 1.0.0-alpha5
Perbaikan Bug
- Perbaikan pemuatan halaman saat placeholder dinonaktifkan b/70573345
- Logging tambahan untuk melacak bug IllegalArgumentException b/70360195 (dan perbaikan sisi Room spekulatif)
- Perbaikan kode contoh Javadoc b/70411933, b/71467637
11 Desember 2017
Paging alpha4-1
dirilis. Ini adalah rilis perbaikan kecil pada bug untuk Paging alfa 4.
Perbaikan Bug
- Jangan periksa parameter callback untuk sumber data yang tidak valid. b/70353706, b/70360195
7 Desember 2017
Paging alpha4
dirilis, dengan perubahan dan penambahan yang signifikan, sebagian besar menargetkan jaringan, dan kasus penggunaan jaringan + database.
Perubahan API
DataSource
sekarang adalah API asinkron, untuk lebih memudahkan paging langsung dari jaringan:- Titik masuk tunggal untuk ukuran dan data awal
- Mendukung percobaan ulang jaringan dengan menahan callback, dan mengirimnya nanti
- Callback threadsafe memungkinkan pemuatan asinkron untuk membuat
PagedList
yang didukung jaringan tunggal pada thread UI. - Perilaku error di sekitar parameter pemuatan awal lebih jelas
TiledDataSource
berganti nama 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
berganti nama menjadiItemKeyedDataSource
untuk membuat perbedaan yang jelas.LivePagedListBuilder
danDataSource.Factory
menggantikanLivePagedListProvider
. Pembuat 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
menerimaDataSource
+PagedList..Config
, sekarang lebih mirip denganLivePagedListBuilder
, dan memungkinkan operator diamond pada bahasa Java atau jenis yang ditentukan di Kotlin.PagedList.getConfig()
ditambahkan, danPagedList..Config
sekarang memiliki properti anggota publik.KeyedDataSource.loadBefore()
tidak lagi mengharapkan hasil terbalik.PagedListAdapter.onCurrentListChanged()
ditambahkan untuk mendengarkan update di mana PagedList sedang ditampilkan.
Perbaikan Bug
- Memperbaiki IndexOutOfBoundsException di PagedListAdapter(Helper) b/67883658
1.0.0 - 6 November 2017
Semua komponen utama (kecuali Paging) sekarang 1.0.0
. Ini adalah rilis yang sama persis seperti rc1
kecuali satu perubahan pada library reactivestreams
.
Perbaikan Bug
LiveDataReactiveStreams
sekarang mengimplementasikan spesifikasi Aliran Reaktif dengan benar. b/67999342
Kandidat Rilis - 18 Oktober 2017
Semua artefak utama (kecuali Paging) sekarang menjadi 1.0.0-rc1
.
Tidak ada masalah umum atau fitur baru yang dijadwalkan untuk rilis 1.0.0
. Harap upgrade proyek Anda untuk menggunakan 1.0.0-rc1
dan bantu kami untuk melakukan uji tanding agar kami dapat merilis 1.0.0
yang solid.
Perubahan Perilaku
- Dengan rilis ini,
Lifecycle.Event#ON_STOP
sekarang dikirim ketikaonSaveInstanceState
dipanggil (sebelumnya hanya ditandai sebagaiCREATED
tanpa mengirimON_STOP
). Anda dapat membaca lebih lanjut tentang hal ini di dokumentasi Lifecycle.
Perbaikan Bug
Room:
- Room sekarang tergantung pada artefak xerial terbaru yang memperbaiki masalah
OutOfMemory
selama kompilasi. b/62473121 - Metode
Query
sekarang dapat dianotasi dengan@Transaction
. Lihat dokumen referensi di@Transaction
untuk informasi selengkapnya. b/65112315 - Kelas
StringUtil
di Room dihapus dari API publik (tidak pernah dimaksudkan sebagai API publik).
- Room sekarang tergantung pada artefak xerial terbaru yang memperbaiki masalah
Lifecycle:
LiveData
berfungsi dengan baik saat Aktivitas hanya sebagian dicakup di API <24. b/65665621Metode
OnLifecycleEvent
di kelas induk sekarang dipanggil dengan benar atau peringatan dicetak selama kompilasi jika tidak memungkinkan. b/63474615Lifecycle sekarang mengembalikan
WeakReference
ke LifecycleOwner untuk menghindari bocornya LifecycleOwner jika Lifecycle disimpan lebih lama dari biasanya di memori (ini hanya tindakan pencegahan, Anda harus tetap berhati-hati agar tidak membocorkanLifecycle
).
9 Oktober 2017
Paging alpha-3
dirilis; yang membuatnya kompatibel dengan rilis beta 2
dari Lifecycle dan Room.
Perbaikan Bug
- Peningkatan Dokumentasi Paging.
5 Oktober 2017
Semua artefak utama (kecuali Paging) sekarang beta 2
.
Tidak ada versi baru Paging dalam rilis ini.
Perbaikan Bug
Lifecycle:
LiveDataReactiveStreams
sekarang berhenti berlangganan dengan benar dari penerbit sumber saatLiveData
tidak aktif. b/62609183- Peristiwa siklus proses disebarkan dengan benar ke kelas induk jika kelas induk berasal dari modul lain. b/63474615
- LiveData menangani pengamat dengan benar saat mereka berhenti berlangganan selama pembuatan langganan. b/66337741
FullLifecycleObserver
untuk artefak Bahasa Java 8 sekarang tersedia dalam hierarki dependensi. b/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 saat kompilasi ketika Pojo yang dikembalikan dalam metode
@Query
memiliki kolom@NonNull
yang tidak cocok dengan kolom apa pun dalam respons kueri. Jika kolomnya@Nullable
, Room hanya mencetak peringatan. b/67115337 - Room sekarang memvalidasi indeks dalam versi OS yang lebih baru. b/63132683
- Room akan memilih konstruktor tanpa-arg secara default jika ada beberapa konstruktor pencocokan di Pojo. b/67353427
- Kunci utama kolom tunggal dapat menjadi
Nullable
jika kuncinya adalahInteger
atauLong
. b/67086876 - Pelacak pembatalan menangani entri ulang dalam mode uji coba dengan benar. b/65471397
- Room sekarang memeriksa karakter yang tidak valid di kolom dan nama tabel pada waktu kompilasi (karakter tidak valid:
`
,"
). b/64749111
- Room sekarang mencetak error pada saat kompilasi ketika Pojo yang dikembalikan dalam metode
21 September 2017
Dengan rilis ini, semua modul Komponen Arsitektur mencapai setidaknya beta 1
(kecuali Library Paging baru yang yaitu alpha 2
).
Kami tidak merencanakan perubahan API lagi. Perubahan yang tidak terencana mungkin terjadi, tetapi batasan untuk mengubah API apa pun sebelum 1.0.0
stabil sangat tinggi dan sangat kecil kemungkinan untuk terjadi.
- LifecycleActivity & LifecycleFragment akan dihapus sebelum
1.0.0
stabil. Keduanya tidak diperlukan saat menggunakan Library Dukungan26.1.0
atau lebih baru.
Berbeda dengan fase alfa, fase beta dijadwalkan menjadi durasi yang sangat singkat.
Perubahan Versi
- Ekstensi Lifecycle dan Room sekarang menjadi
beta 1
- Paging sekarang adalah
alpha 2
- Tidak ada perubahan dalam Lifecycle (runtime, umum) dan Arch Core (umum). Kedua artefak ini adalah versi
1.0.0
sejak 13 September.
Artefak Baru
Lifecycle sekarang memiliki artefak baru yang disebut
common-java8
. Artefak ini berisi antarmuka baru yang disebut DefaultLifecycleObserver; yang memiliki implementasi default untuk semua metode Lifecycle. Jika Anda menggunakan bahasa Java 8, Anda harus lebih memilih artefak ini daripada anotasi.- Karena bug di
beta1
, Anda perlu menambahkan dependensi eksplisit pada modulandroid.arch.lifecycle:common:1.0.1
untuk menggunakan artefakcommon-java8
baru. Masalah ini akan diperbaiki dalambeta2
.
- Karena bug di
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 kecuali Anda langsung menggunakannya, Anda tidak perlu mengubah apa pun di file build Anda.
Perubahan API
Room:
- Anotasi @ColumnInfo sekarang mendukung penyetelan pemeriksaan pada kolom. b/62007004
- Kolom
transient
sekarang diabaikan secara default kecuali jika mereka dianotasi dengan@ColumnInfo
,@Embedded
, atau@Relation
. b/62600692 - Kunci Utama harus dianotasi dengan
@NonNull
kecuali jika dibuat secara otomatis. b/64292391- Perubahan ini mungkin memerlukan migrasi skema. Kami mohon maaf atas ketidaknyamanan ini.
- Menambahkan anotasi kenyamanan baru (@Transaction) yang menggantikan metode
DAO
dan menjalankannya di dalam transaksi.
Database SQLite Dukungan:
- 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 tergantung pada junit. b/65690261
1.0.0 Alfa 9-1 - 13 September 2017
Ini adalah rilis besar di mana artefak siklus proses inti (runtime, umum) dan arch core (umum) mencapai versi stabil 1.0.0
.
Seiring dengan perubahan ini, Library Dukungan 26.1.0 sekarang tergantung pada library-library ini. AppCompatActivity dan Fragmen Dukungan sekarang mengimplementasikan antarmuka LifecycleOwner.
Rilis ini juga tergantung pada Library Dukungan 26.1.0
untuk mengambil keuntungan dari integrasi baru.
Library Baru: Paging
Rilis ini juga mencakup library baru bernama Paging, yang memungkinkan pemuatan kumpulan data besar dengan mudah ke RecyclerView dalam beberapa potongan bila diperlukan. Paging dirilis sebagai alpha1
dan akan memiliki siklus rilisnya sendiri.
Perubahan API
- Kelas berikut tidak lagi digunakan dan akan dihapus dalam rilis mendatang:
Perbaikan Bug
Kelas yang dihasilkan sekarang dianotasi dengan
@Generated
jika aplikasi memiliki anotasi di classpath. b/35754819Memperbaiki bug perbandingan pengamat MediatorLiveData. b/64413274
Kueri
WITH
SQLite sekarang didukung dengan [LiveData]. [ref-LiveData]b/62510164Memperbaiki bug di mana InvalidationTracker tidak akan mengirim daftar yang benar jika lebih dari 1 tabel diamati. b/65099281
Memperbaiki bug di mana Room akan menghasilkan file berbeda di Windows. b/64470691
LifecycleObserver dalam paket root sekarang didukung. b/62310817
1.0.0 Alfa 9 - 16 Agustus 2017
Perbaikan bug
- Memperbaiki bug di LiveData, Observer kedua diabaikan saat yang pertama dihapus dari metode
onChanged
. b/64285805
1.0.0 Alfa 8 - 1 Agustus 2017
Perubahan Perilaku
- Pembatas
NOT NULL
ditambahkan untuk kolom jenis primitif atau kolom yang dianotasi dengan NonNull. Ini mengubah struktur tabel Anda, jadi jika Anda sudah menggunakan Komponen Arsitektur alfa 7 atau yang lebih lama, Anda perlu menerapkan migrasi jika ingin menyimpan datanya, atau menggunakan metodefallbackToDestructiveMigration()
pada builder. b/62007004
Perubahan API
- SupportSQLiteProgram sekarang memperluas AutoCloseable. b/63131997
1.0.0 Alfa 7 - 26 Juli 2017
Perbaikan bug
Memperbaiki bug kritis dalam metode
removeObserver
LifecycleRegistry, yang memutus penambahan ulang LifecycleObserver.Memperbaiki InvalidationTracker untuk database khusus b/63162311
1.0.0 Alfa 6 - 25 Juli 2017
Perubahan perilaku
Urutan panggilan LifecycleObserver telah diubah. Sebelumnya pengamat selalu dipanggil dalam urutan penambahan mereka: jika
observer1
ditambahkan sebelumobserver2
, maka akan menerimaON_CREATE
dan semua peristiwa lainnya sebelumobserver2
. Ini tidak lagi benar untuk peristiwa-peristiwa penghancuran, karena bagi peristiwa-peristiwa tersebut, para pengamat dipanggil dalam urutan terbalik. Jadi perilaku saat ini adalah: jikaobserver1
ditambahkan sebelumobserver2
, makaON_CREATE
dikirim terlebih dahulu keobserver1
, kemudian keobserver2
(sama halnya untukON_START
danON_RESUME
), tetapi peristiwaON_PAUSE
dikirim terlebih dulu keobserver2
dan kemudian keobserver1
(sama halnya untukON_STOP
danON_DESTROY
).Room melontarkan pengecualian jika migrasi hilang. Sebelumnya Room hanya akan menghapus database, tetapi sekarang Room akan error. Developer dapat ikut serta dalam perilaku pembersihan dengan memanggil API pembuat. b/63872392
Perubahan API
Menambahkan metode
fallbackToDestructiveMigration()
keRoomDatabase..Builder
untuk menghapus database jika migrasi hilang. b/63872392Komponen arsitektur sekarang bergantung pada library dukungan 26.0.0
Perbaikan bug
Memperbaiki penanganan @Relation yang disarangkan ke @Embedded. b/63736065
Memperbaiki migrasi pengujian untuk tabel dengan kunci primer yang mengalami peningkatan otomatis. b/63393618
Sekarang @Queries yang menjalankan kueri DELETE atau UPDATE menerima argumen dengan benar. b/63872538
Sekarang ViewModels dipertahankan, ketika fragmen pemilik ada di backstack dan perubahan konfigurasi terjadi dua kali. b/38445801
1.0.0 Alfa 5 - 18 Juli 2017
Perubahan API
Menambahkan metode callback baru ke
RoomDatabase..Builder
untuk mengamati ketika 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 getter dan setter. b/63733651
1.0.0 Alfa 4 - 11 Juli 2017
Perubahan API
Menambahkan metode kenyamanan baru (
runInTransaction()
) ke RoomDatabase.Metode
@Insert
,@Delete
, dan@Update
sekarang dapat mengetahui parameter dari jenis entity yang berbeda. b/62682405
Perbaikan Bug
Memperbaiki penanganan
byte[]
dalam metode@Dao
. b/62460045Pemeriksaan migrasi di Room sekarang menggunakan perbandingan tidak peka huruf besar atau kecil. b/62875382
Memperbaiki konfigurasi proguard untuk artefak Lifecycle. b/62113696
1.0.0 Alfa 3 - 15 Juni 2017
Perubahan API
@OnLifecycleEvent
sekarang hanya mendukung 1 parameter peristiwa. Ini adalah perubahan untuk persiapan pada dukungan Java 8 sehingga kami dapat bermigrasi ke antarmuka dengan metode default di masa mendatang. Sehubungan dengan perubahan ini, hanya metode teranotasi@OnLifecycleEvent(ON_ANY)
yang dapat menerima parameter kedua tipeEvent
(parameter pertama adalahLifecycleOwner
). Lihat dokumen Lifecycle untuk informasi selengkapnya.Kelas
LifecycleActivity
danLifecycleFragment
dipindah ke artefakandroid.arch.lifecycle:extensions
.MigrationTestHelper menerima instance Instrumentasi sebagai ganti
Context
agar dapat membaca skema dari aset pengujian dan membuat database dalam konteks aplikasi.Anotasi
@Insert
,@Delete
, dan@Update
dalam metode@DAO
sekarang dapat menerimaIterable
sebagai jenis parameter. b/62259820
Perbaikan Bug
Metode yang diganti bersama peristiwa siklus proses tidak lagi disebut berulang kali.
Beberapa parameter
IN
sekarang ditangani dengan benar. b/62608681Kelas DAO abstrak sekarang dapat memiliki konstruktor yang menerima instance
@Database
. b/38488747DAO
sekarang dapat memiliki kelas/antarmuka super dengan parameter jenis. b/62103620
1.0.0 Alfa 2 - 2 Juni 2017
Perubahan API
Callback InvalidationTracker sekarang menerima daftar nama tabel yang diubah. (b/38468740)
Mengurangi permukaan API dari kelas SupportSQLiteDatabase. (b/38481640)
Perbaikan Bug
- File proguard untuk siklus proses. (b/62113696)
- Hilangnya data dengan Pengonversi Jenis. (b/62100716)
- Memungkinkan pengembalian
Long[]
dari kueri@Insert
.
1.0.0 Alfa 1 - 17 Mei 2017
MinSDK: 14
Saran umum
Sementara kami melakukan banyak pengujian sebelum peluncuran, Komponen Arsitektur saat ini dalam versi alfa. Jika Anda membuat aplikasi produksi, perhatikan bahwa API akan berubah sebelum rilis 1.0 dan mungkin tidak sepenuhnya tangguh. Jika Anda tidak nyaman dalam men-debug di library yang Anda gunakan, kami sarankan untuk mencoba Komponen Arsitektur sebagai proyek sampingan terlebih dahulu.
Kami tidak menyarankan semua orang untuk bermigrasi hari ini. Kami akan menyiapkan panduan migrasi untuk rilis 1.0 komponen arsitektur.
Keterbatasan dan masalah umum
Fragment
danActivityCompat
Lifecycle pada Library Dukungan belum menerapkan antarmukaLifecycleOwner
. Keduanya akan menerapkan antarmuka ketika Komponen Arsitektur mencapai versi 1.0.0.