Ngày 15 tháng 1 năm 2019
WorkManager
Phát hành WorkManager 1.0.0-beta02
. Bản phát hành này có một số phần sửa lỗi.
Sửa lỗi
- Khắc phục một trường hợp phức tạp (edge case), trong đó công việc định kỳ có thể chạy nhiều lần trong mỗi khoảng thời gian trên các thiết bị chạy Android 6.0 (API cấp 23). b/121998363
- Khắc phục một
ConcurrentModificationException
trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/121345393 - Khắc phục lỗi thực thi công việc khi không đáp ứng các quy tắc Ràng buộc trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/122578012
- Đã tối ưu hoá việc xử lý hoàn thành công việc để trở nên nhanh hơn trong một số trường hợp phức tạp. b/122358129
- Thêm một thay đổi để giải quyết các điều kiện tương tranh (race condition) tiềm ẩn trong nhiều thực thể của
LiveData
mà WorkManager sử dụng. - Chuyển sang sử dụng
Room
phần phụ thuộc1.1.1
thay vì1.1.1-rc01
; các phiên bản này giống hệt nhau. b/122578011
Ngày 19 tháng 12 năm 2018
WorkManager
Phát hành WorkManager 1.0.0-beta01
. Bản phát hành này không chứa nội dung thay đổi API nào; Từ giờ trở đi, WorkManager dự kiến sẽ duy trì API ổn định cho đến phiên bản tiếp theo trừ phi có sự cố nghiêm trọng. Bản phát hành này có một số phần sửa lỗi.
Sửa lỗi
- Các phần tử con đã huỷ trước đó của công việc thuộc lớp cha đã hoàn thành thành công sẽ không còn chạy được nữa. b/120811767
- Các lớp ghi nhật ký được khởi chạy đúng cách (chủ yếu hiển thị trong quá trình thử nghiệm).
Ngày 18 tháng 12 năm 2018
Navigation
Phát hành 1.0.0-alpha09
. Bản phát hành này chứa một số thay đổi có thể gây lỗi API;
vui lòng xem phần Thay đổi có thể gây lỗi bên dưới.
Chúng tôi chọn không tiếp tục phát triển cấu phần mềm android.arch.navigation:navigation-testing
. Mặc dù đã được chứng minh là hữu ích cho việc thử nghiệm nội bộ của NavController
, nhưng bạn nên có các chiến lược thử nghiệm thay thế, chẳng hạn như mô phỏng thực thể NavController
để xác minh rằng navigate()
chính xác đang thực hiện lệnh gọi. Cách tiếp cận này
sẽ được thảo luận chi tiết trong bài
Buổi nói chuyện về Single Activity tại AndroidDevSummit 2018
và chúng tôi sẽ nghiên cứu tài liệu bổ sung cụ thể về việc thử nghiệm
bằng Navigation.
Tính năng mới
MenuItem
cómenuCategory="secondary"
sẽ không hiển thị ngăn xếp lui nữa khi sử dụng với các phương thứcNavigationUI
. b/120104424AppBarConfiguration
nay cho phép bạn đặt một thực thểOnNavigateUpListener
dự phòng sẽ được gọi khinavController.navigateUp()
trả vềfalse
. b/79993862 b/120690961
Thay đổi có thể gây lỗi
- Khi bạn sử dụng
<argument>
vớiargType="reference"
, Navigation không còn phân tích tệp tham chiếu nữa mà thay vào đó là cung cấp chính mã nhận dạng tài nguyên thô. b/111736515 - Theo mặc định,
onNavDestinationSelected()
sẽ hiện trở lại điểm bắt đầu của biểu đồ điều hướng, làm cho các biểu đồ này nhất quán với các phương thứcsetup
. ThêmmenuCategory="secondary"
vàoMenuItem
để tránh làm bật ra ngăn xếp lui. aosp/852869 - Phương thức
fromBundle()
của các lớpArgs
được tạo hiện giờ sẽ lấyBundle
không rỗng thay vìBundle
rỗng aosp/845616
Sửa lỗi
- Các đối số nay được phân tích cú pháp chính xác từ các đường liên kết sâu dưới dạng
argType
chính xác thay vì luôn là các chuỗi b/110273284 - Bây giờ, Navigation sẽ xuất đúng tài nguyên công khai b/121059552
- Safe Args nay tương thích với trình bổ trợ Android cho Gradle 3.4 Canary 4 trở lên b/119662045
Ngày 12 tháng 12 năm 2018
WorkManager
Phát hành WorkManager 1.0.0-alpha13
. Bản phát hành này có một thay đổi nhỏ về API sẽ hữu ích cho một số người dùng Kotlin.
Các thay đổi về API
- Chuyển
androidx.work.Result
làm lớp bên trong củaListenableWorker
. Điều này giúp ngăn chặn việc tái cấu trúc xung đột với lớpResult
cấp cao của Kotlin. Đây là một thay đổi có thể gây lỗi API. b/120564418
Thay đổi về API có thể gây lỗi
- Chuyển
androidx.work.Result
làm một lớp bên trong củaListenableWorker
.
Ngày 6 tháng 12 năm 2018
Paging
Paging 2.1.0-rc01
được phát hành mà không có thay đổi nào từ 2.1.0-beta01
.
Navigation
Phát hành 1.0.0-alpha08
. Bản phát hành này chứa một số thay đổi có thể gây lỗi API;
vui lòng xem phần Thay đổi có thể gây lỗi bên dưới.
Tính năng mới
- Nhãn đích, khi được dùng với các phương thức
NavigationUI
, giờ đây sẽ tự động thay thế các thực thể{argName}
trongandroid:label
bằng đối số chính xác b/80267266 - Hiện tại, cách điều hướng tuỳ thuộc vào Thư viện hỗ trợ 28.0.0 b/120293333
Thay đổi có thể gây lỗi
OnNavigatedListener
đổi tên thànhOnDestinationChangedListener
b/118670572OnDestinationChangedListener
hiện cũng truyền đối sốBundle
aosp/837142- Các thuộc tính
app:clearTask
vàapp:launchDocument
cùng các phương thức liên kết với những thuộc tính này đã bị xoá. Sử dụngapp:popUpTo
với thư mục gốc của biểu đồ để xoá tất cả đích khỏi ngăn xếp lui. b/119628354 ActivityNavigator.Extras
hiện sử dụng mẫuBuilder
và thêm khả năng đặt bất kỳ cờIntent.FLAG_ACTIVITY_
nào aosp/828140NavController.onHandleDeepLink
đổi tên thànhhandleDeepLink
aosp/836063- Nhiều lớp và phương thức không dùng để phân lớp, chẳng hạn như
NavOptions
,NavInflater
,NavDeepLinkBuilder
vàAppBarConfiguration
, đã được tạofinal
aosp/835681 - Phương thức
NavHostFragment.setGraph()
không dùng nữa đã bị xoá aosp/835684 - Phương thức
NavigationUI.navigateUp(DrawerLayout, NavController)
không dùng nữa đã bị xoá. aosp/835684 - Chúng tôi đã chuyển tính năng tạo Mảnh (Fragment) sang
FragmentNavigator
, qua đó giúp bạn uỷ quyền việc tạo Fragment choFragmentFactory
dễ dàng hơn. b/119054429 - Hàm khởi tạo cho
NavGraphNavigator
không còn lấyContext
aosp/835340 - NavigatorProvider hiện là một lớp, chứ không phải là một giao diện.
NavigatorProvider
dogetNavigatorProvider()
trả về không thay đổi chức năng của chế độ này. aosp/830660 - Xoá
NavDestination.navigate()
. Gọinavigate()
trênNavigator
. aosp/830663 - Việc tái cấu trúc đáng kể
Navigator
, giúp bạn không cần phải cóOnNavigatorNavigatedListener
mà thay vào đó, hãy yêu cầunavigate
trả vềNavDestination
trong đó. - Các thực thể
Navigator
không gửi được các sự kiện bật lên choNavController
nữa. Hãy cân nhắc sử dụngOnBackPressedCallback
để chặn hoạt động nhấn nút quay lại và gọinavController.popBackStack()
. aosp/833716
Sửa lỗi
popUpTo
hiện đang hoạt động nhất quán khi đích đến là phần tử<navigation>
b/116831650- Khắc phục một số lỗi dẫn đến lỗi
IllegalArgumentException
khi sử dụng biểu đồ lồng nhau b/118713731 b/113611083 b/113346925 b/113305559 - Thuộc tính
dataPattern
của<activity>
đích hiện sẽ điền các đối số từ đối số không phải Chuỗi bằng cách gọitoString()
b/120161365
Safe Args
- Safe Args hỗ trợ các đối tượng nối tiếp, bao gồm cả giá trị Enum. Các loại Enum
có thể đặt giá trị mặc định bằng cách sử dụng cách liệt kê enum mà không có tên lớp
(ví dụ:
app:defaultValue="READ"
) b/111316353 - Safe Args hỗ trợ các mảng thuộc mọi loại được hỗ trợ b/111487504
- Giờ đây, tất cả thư mục tài nguyên sẽ chứa các thư mục tài nguyên. b/117893516
- Safe Args sẽ thêm
@Override
chú thích khi thích hợp b/117145301
Ngày 5 tháng 12 năm 2018
WorkManager
Phát hành WorkManager 1.0.0-alpha12
. Bản phát hành này chứa một số thay đổi về API có thể gây lỗi; xin vui lòng xem phần Thay đổi về API có thể gây lỗi bên dưới. Phiên bản này có thể sẽ được phát hành dưới dạng phiên bản beta đầu tiên của chúng tôi. alpha12
cũng chứa nội dung cập nhật tài liệu mở rộng.
Các thay đổi về API
- Cấu phần phần mềm mới
work-rxjava2
, giới thiệuRxWorker
. Đây làListenableWorker
dự kiến cóSingle<Payload>
. - Chúng tôi đã ngừng hỗ trợ Firebase JobDispatcher do sắp ngừng sử dụng. Điều này có nghĩa là cấu phần phần mềm
work-firebase
sẽ không còn được cập nhật khi chúng tôi chuyển sang giai đoạn thử nghiệm. Chúng tôi sẽ tìm cách bổ sung một giải pháp thay thế trong tương lai. - Kết hợp
Payload
vàoResult
.Result
hiện là một "lớp kín" với 3 cách triển khai cụ thể mà bạn có thể thu được quaResult.success()
(hoặcResult.success(Data)
),Result.failure()
(hoặcResult.failure(Data)
) vàResult.retry()
. CácListenableFuture
của bạn nay nhận đượcResult
thay vìPayload
.Worker
không có các phương thức getter và setter cho đầu raData
. Đây là một thay đổi có thể gây lỗi. - Thêm
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)
vàConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)
cùng các biến thể để hỗ trợ tốt hơn cho việc kích hoạt chậm (slow triggering) các URI nội dung. b/119919774 - Thêm biến thể
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)
. Phương thức này yêu cầu API 26. - Thêm các phương thức mở rộng Kotlin
Operation.await()
vàListenableFuture.await()
. - Đổi tên
Operation.getException()
thànhOperation.getThrowable()
. Đây là một thay đổi có thể gây lỗi. - Lớp và phương thức
ContentUriTriggers
tham chiếu đến lớp này sẽ không dùng được cho mục đích công khai nữa. Đây là một thay đổi có thể gây lỗi. - Xoá các phương thức vararg còn lại trong
WorkManager
,WorkContinuation
vàOneTimeWorkRequest
để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói vararg hiện có của mình bằngArrays.asList(...)
. Chúng tôi vẫn cung cấp các phiên bản của từng phương thức. Đây là một thay đổi có thể gây lỗi. - Xoá các biến thể
WorkContinuation.combine(OneTimeWorkRequest, *)
. Các biến thể này đã đưa ra một API khó hiểu. Các phương thứccombine
hiện tại dễ hiểu hơn. Đây là một thay đổi có thể gây lỗi.
Sửa lỗi
- Việc triển khai Pre-Marshmallow hiện đáng tin cậy hơn trong việc khôi phục từ quá trình kết thúc một tác vụ đã thực thi.
LiveData
được quan sát quaobserveForever
được theo dõi qua WorkManager. Đây là bản sửa lỗi điều chỉnh cho phiên bản cũ của một thư viện Room. b/74477406- Hiện tại,
Data.Builder.build()
sẽ tạo ra một trường hợp ngoại lệ nếu đối tượng nối tiếp vượt quá kích thước tối đa. Trước đây, lỗi này chỉ xảy ra trên một chuỗi trong nền mà bạn không thể xử lý đúng cách. - Phân biệt nâng cao công việc đã dừng so với công việc đã huỷ;
getWorkInfoById()
sẽ trả về mộtWorkInfo
vớiCANCELLED
State
trong quá trìnhListenableWorker.onStopped()
. - Coi
null
Result
là lỗi trongListenableWorker
. b/120362353 - Bản sửa lỗi suy đoán cho Máy tính bảng Shield chạy API 24 mà đôi khi cho ra một
IllegalArgumentException
. b/119484416
Thay đổi về API có thể gây lỗi
- Chúng tôi đã ngừng hỗ trợ Firebase JobDispatcher do sắp ngừng sử dụng. Điều này có nghĩa là cấu phần phần mềm
work-firebase
sẽ không còn được cập nhật khi chúng tôi chuyển sang giai đoạn thử nghiệm. Chúng tôi sẽ tìm cách bổ sung một giải pháp thay thế trong tương lai. - Kết hợp
Payload
vàoResult
.Result
hiện là một "lớp kín" với 3 cách triển khai cụ thể mà bạn có thể thu được quaResult.success()
(hoặcResult.success(Data)
),Result.failure()
(hoặcResult.failure(Data)
) vàResult.retry()
. CácListenableFuture
của bạn nay nhận đượcResult
thay vìPayload
.Worker
không có các phương thức getter và setter cho đầu raData
. - Thêm các phương thức mở rộng Kotlin
Operation.await()
vàListenableFuture.await()
. - Đổi tên
Operation.getException()
thànhOperation.getThrowable()
. - Lớp và phương thức
ContentUriTriggers
tham chiếu đến lớp này sẽ không dùng được cho mục đích công khai nữa. - Xoá các phương thức vararg còn lại trong
WorkManager
,WorkContinuation
vàOneTimeWorkRequest
để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói vararg hiện có của mình bằngArrays.asList(...)
. Chúng tôi vẫn cung cấp các phiên bản của từng phương thức. - Xoá các biến thể
WorkContinuation.combine(OneTimeWorkRequest, *)
. Các biến thể này đã đưa ra một API khó hiểu; các phương thứccombine
hiện tại dễ hiểu hơn.
Ngày 4 tháng 12 năm 2018
Room
Phát hành Room 2.1.0-alpha03
, có hỗ trợ coroutine và một số bản sửa lỗi.
Thay đổi về API
- FTS
tokenizer
trong@Fts3
/@Fts4
hiện lấy một String thay vì một Enum. Việc này cho phép Room sử dụng các trình tạo mã thông báo tuỳ chỉnh. Các trình tạo mã thông báo được tích hợp sẵn vẫn được định nghĩa trongFtsOptions
dưới dạng hằng số chuỗi. b/119234881
Tính năng mới
- Coroutine: Hiện tại, các phương thức DAO có thể là các hàm tạm ngưng. Để hỗ trợ việc tạm ngưng các chức năng trong Room, một cấu phần phần mềm mới đã được phát hành (
room-coroutines
). b/69474692 - Các phương thức DAO chú giải bằng
@Insert
,@Delete
hoặc@Update
hiện hỗ trợListenableFuture
dưới dạng kiểu dữ liệu trả về. b/119418331
Sửa lỗi
- Khắc phục lỗi khi Room cố gắng tìm sai hàm khởi tạo có cột trong thuộc tính
ignoredColumns
của@Entity
. b/119830714 - Khắc phục lỗi khiến Room không đánh dấu các tham số phương thức DAO là cuối cùng trong quá trình triển khai. b/118015483
- Khắc phục lỗi khiến trình xử lý của Room gặp sự cố khi báo cáo lỗi về một truy vấn có các ký hiệu đặc biệt. b/119520136
- Khắc phục lỗi khi Room từ chối nhiều cách triển khai
Collection
khác làm đối số của biểu thứcIN
. b/119884035 - Khắc phục lỗi khiến LiveData được trả về từ Room sẽ thu thập rác khi quan sát vĩnh viễn khiến cho dữ liệu đó không còn phát ra dữ liệu mới nữa. b/74477406
- Cập nhật khoá đóng của
RoomDatabase
để giảm dung lượng khoá. b/117900450
Ngày 8 tháng 11 năm 2018
WorkManager
Phát hành WorkManager 1.0.0-alpha11
. Bản phát hành này chứa nhiều thay đổi sẽ trở thành API ổn định tại beta
.
Bản phát hành này có một số thay đổi về API có thể gây lỗi; vui lòng xem phần Thay đổi về API có thể gây lỗi bên dưới.
Các thay đổi về API
work-runtime-ktx
ra mắt mộtCoroutineWorker
mới.WorkStatus
đổi tên thànhWorkInfo
Tất cả biến thể tương ứng của phương thứcgetStatus
đã được đổi tên thành các biến thể củagetWorkInfo
tương ứng. Đây là một thay đổi có thể gây lỗi.ListenableWorker.onStopped()
không còn chấp nhận việc có đối số boolean cho biếtWorkRequest
có bị huỷ hay không.WorkManager
không còn tạo ra sự khác biệt này nữa. Đây là một thay đổi có thể gây lỗi.- Gói
androidx.work.test
đổi tên thành góiandroidx.work.testing
. Đây là một thay đổi có thể gây lỗi. - Phương thức setter trên
Constraints
không còn là một phần của API công khai. Đây là một thay đổi có thể gây lỗi. WorkerParameters.getTriggeredContentUris()
vàWorkerParameters.getTriggeredContentAuthorities()
đã trả về các mảng trước đó. Những phương thức này hiện trả về Collections. Đây là một thay đổi có thể gây lỗi.ListenableWorker.onStartWork()
đổi tên thànhListenableWorker.startWork()
. Đây là một thay đổi có thể gây lỗi.- Hàm khởi tạo cho
WorkStatus
không còn là một phần của API công khai. Đây là một thay đổi có thể gây lỗi. Configuration.getMaxJobSchedulerID()
vàConfiguration.getMinJobSchedulerID()
lần lượt được đổi tên thànhConfiguration.getMinJobSchedulerId()
vàConfiguration.getMaxJobSchedulerId()
. Đây là một thay đổi có thể gây lỗi.- Thêm nhiều chú thích
@NonNull
vào API công khai để cải thiện tính gọn nhẹ (ergonomic) của API. - Thêm API
WorkManager.enqueueUniqueWork()
để thêm cácOneTimeWorkRequest
duy nhất vào hàng đợi mà không phải tạoWorkContinuation
. - Tất cả biến thể của các phương thức
enqueue
vàcancel
trênWorkManager
hiện sẽ trả về kiểuOperation
mới. Đây là một thay đổi có thể gây lỗi. - Tất cả biến thể của
enqueue
không còn chấp nhận các vararg đối vớiWorkRequest
nữa. Đây là một thay đổi có thể gây lỗi. Hãy sử dụng Bộ sưu tập (Collection). Bạn có thể sử dụngArrays.asList()
để sửa đổi mã hiện có. Chúng tôi làm như vậy để giảm số lượng API và phương thức giao diện. - Hiện tại, nếu cố gắng thực hiện
initialize
WorkManager
nhiều lần trong mỗi quá trình, sẽ dẫn đến mộtIllegalStateException
. Đây là một thay đổi có thể gây lỗi.
Sửa lỗi
- Giờ đây,
WorkRequest.Builder
trong cấu phần phần mềmwork-runtime-ktx
hiện sử dụngListenableWorker
. Bản sửa lỗi b/117666259 - Hãy đảm bảo thời gian chạy tiếp theo của
PeriodicWork
là trong tương lai. Bản sửa lỗi b/118204399 - Xoá phần dung lượng lưu trữ I/O có thể được tạo ra khi sử dụng WorkManager lúc khởi động ứng dụng. Bản sửa lỗi b/117796731
- Khắc phục một tình huống tương tranh trong
WorkConstraintsTracker
. Khắc phục android-workmanager/issues/56
Thay đổi về API có thể gây lỗi
WorkStatus
đổi tên thànhWorkInfo
Tất cả biến thể tương ứng của phương thứcgetStatus
đã được đổi tên thành các biến thể củagetWorkInfo
tương ứng.ListenableWorker.onStopped()
không còn chấp nhận việc có đối số boolean cho biếtWorkRequest
có bị huỷ hay không.WorkManager
không còn tạo ra sự khác biệt này nữa.- Gói
androidx.work.test
đổi tên thành góiandroidx.work.testing
. - Phương thức setter trên
Constraints
không còn là một phần của API công khai. WorkerParameters.getTriggeredContentUris()
vàWorkerParameters.getTriggeredContentAuthorities()
đã trả về các mảng trước đó. Những phương thức này hiện trả về Collections.ListenableWorker.onStartWork()
đổi tên thànhListenableWorker.startWork()
.- Hàm khởi tạo cho
WorkStatus
không còn là một phần của API công khai. Configuration.getMaxJobSchedulerID()
vàConfiguration.getMinJobSchedulerID()
lần lượt được đổi tên thànhConfiguration.getMinJobSchedulerId()
vàConfiguration.getMaxJobSchedulerId()
.- Tất cả biến thể của các phương thức
enqueue
vàcancel
trênWorkManager
hiện sẽ trả về kiểuOperation
mới. - Tất cả biến thể của
enqueue
không còn chấp nhận các vararg đối vớiWorkRequest
nữa. - Nếu bạn cố gắng
initialize
WorkManager
nhiều lần một quy trình, thì nay sẽ có kết quả là mộtIllegalStateException
.
Ngày 1 tháng 11 năm 2018
Paging
Paging 2.1.0-beta01
được phát hành mà không có thay đổi nào từ 2.1.0-alpha01
.
Ngày 30 tháng 10 năm 2018
Room
Room 2.1.0-alpha02
được phát hành cùng với một số bản sửa lỗi và một tính năng mới.
Tính năng mới
- Thêm chức năng hỗ trợ để tham chiếu
@DatabaseView
trong@Relation
. b/117680932
Sửa lỗi
- Khắc phục lỗi khiến Room thực hiện I/O ổ đĩa trong luồng chính khi đăng ký và loại bỏ khỏi một kiểu dữ liệu trả về Rx. b/117201279
- Khắc phục lỗi khi Room không tìm thấy trình chuyển đổi kiểu dữ liệu phù hợp cho một trường trong lớp thực thể Kotlin. b/111404868
- Khắc phục lỗi khi Room tạo mã không chính xác cho việc triển khai giao diện
DAO
chứa phương thức mặc định Kotlin không có đối số. b/117527454 - Trình phân tích cú pháp ngữ pháp SQLite của Room đã cập nhật, khắc phục vấn đề về hiệu suất khiến thời gian xây dựng kéo dài. b/117401230
Ngày 29 tháng 10 năm 2018
Navigation
Navigation 1.0.0-alpha07
đã được phát hành kèm theo các bản sửa lỗi và nội dung thay đổi về API.
Tính năng mới
- Lớp AppBarConfiguration mới cho phép bạn tuỳ chỉnh các đích được coi là đích đến cấp cao nhất. Hãy xem tài liệu cập nhật để biết thông tin chi tiết. b/117333663
- Bây giờ, bạn có thể chuyển đối số đích bắt đầu của biểu đồ b/110300470
- Đường liên kết sâu nay hỗ trợ lược đồ tuỳ chỉnh có dấu chấm, dấu gạch nối và dấu cộng. b/112806402
Thay đổi có thể gây lỗi
- Mô-đun
navigation-testing-ktx
đã được đóng thànhnavigation-testing artifact
và sẽ không xuất bản nữa. - Cấu phần mềm
navigation-testing
hiện có một phần phụ thuộc trong thư viện chuẩn Kotlin. API đã được thay đổi để nhất quán hơn với các quy ước Kotlin, nhưng bạn có thể tiếp tục sử dụng API này cho các thử nghiệm viết bằng Java. - Biểu đồ điều hướng đã đăng ký cho tệp kê khai siêu dữ liệu không còn được hỗ trợ nữa. b/118355937
- Hành động không còn được đính kèm vào đích đến <activity>.aosp/785539
Sửa lỗi
- Giờ đây, các đường liên kết sâu có thể phân tích cú pháp các tham số truy vấn một cách chính xác. b/110057514
- Đích đến Activity (Hoạt động) hiện áp dụng chính xác tất cả ảnh động nhập và thoát. b/117145284
- Khắc phục sự cố xảy ra sau khi thay đổi cấu hình khi sử dụng Trình điều hướng tuỳ chỉnh. b/110763345
Safe Args
- Safe Args nay có phần phụ thuộc cố định trên Trình bổ trợ Android cho Gradle 3.2.1. b/113167627
- Bạn hiện có thể tạo Chỉ dẫn cho các lớp bên trong. b/117407555
- Khắc phục vấn đề khi tạo Directions đến biểu đồ <bao gồm>. b/116542123
Ngày 12 tháng 10 năm 2018
Paging
Phát hành Paging 2.1.0-alpha01
được phát hành bằng 2 tuỳ chọn bổ sung chính – thả xuống trang và thư viện tiện ích KTX cho mọi cấu phần phần mềm, cũng như một số thay đổi và sửa lỗi khác liên quan đến API.
Thay đổi về API
- Thêm
PagedList.Config.Builder.setMaxSize()
để giới hạn số lượng mục được tải trong bộ nhớ. - Thêm
androidx.paging.Config()
làm lựa chọn Kotlin thay thế choPagedList.Config.Builder
- Thêm
androidx.paging.PagedList()
làm lựa chọn Kotlin thay thế choPagedList.Builder
- Thêm
DataSourceFactory.toLiveData()
làm lựa chọn Kotlin thay thế choLivePagedListBuilder
- Thêm
DataSourceFactory.toObservable()
vàtoFlowable()
làm lựa chọn Kotlin thay thế choRxPagedListBuilder
- Thêm
AsyncPagedListDiffer.addPagedListListener()
để nghe khi PagedList được hoán đổi. b/111698609 - Thêm biến thể
PagedListAdapter.onCurrentListChanged()
chuyển danh sách cũ và mới, ngừng sử dụng biến thể trước đó. - Thêm biến thể
PagedListAdapter/AsyncPagedListDiffer.submitList()
có chức năng gọi lại kích hoạt nếu/khi pagedlist hiển thị, sau khi so sánh. Điều này cho phép bạn đồng bộ hoá hoạt động hoán đổi PagedList với các bản cập nhật giao diện người dùng khác. b/73781068 - Thêm
PagedList.getLoadedCount()
để cho bạn biết có bao nhiêu mục trong bộ nhớ. Lưu ý rằng giá trị trả về luôn bằng.size()
nếu phần giữ chỗ bị tắt.
Sửa lỗi
- Khắc phục một ình huống tương tranh khi mở rộng nếu danh sách được sử dụng lại b/111591017
- Hiện tại,
PagedList.loadAround()
sẽ cho raIndexOutOfBoundsException
khi chỉ mục không hợp lệ. Trước đây, nó có thể gặp sự cố trừ trường hợp ngoại lệ không rõ ràng. - Khắc phục trường hợp kích thước tải ban đầu cực nhỏ cùng với dữ liệu không thay đổi sẽ không tải thêm nữa b/113122599
Ngày 11 tháng 10 năm 2018
WorkManager
WorkManager 1.0.0-alpha10
được phát hành với khả năng hỗ trợ cho công việc không đồng bộ do nhà phát triển kiểm soát. Bản phát hành này có các thay đổi lớn về API; vui lòng xem phần Thay đổi về API có thể gây lỗi bên dưới.
Chúng tôi dự đoán rằng WorkManager sẽ bước vào giai đoạn cuối của giai đoạn alpha. Chúng tôi dự kiến API sẽ ổn định trong giai đoạn beta, vì vậy, vui lòng dành thời gian để gửi phản hồi của bạn trên công cụ theo dõi lỗi của chúng tôi.
Các thay đổi về API
- Xoá mọi phương thức và lớp
deprecated
trước đây, đặc biệt là hàm khởi tạoWorker
mặc định. Đây là một thay đổi về API có thể gây lỗi. - Đổi tên
NonBlockingWorker
thànhListenableWorker
, hiện là một lớp công khai đã không còn ẩn và sẵn sàng để sử dụng.ListenableWorker
cung cấp quyền truy cập vào một phương thức trừu tượng (ListenableFuture<Payload> onStartWork()
) được gọi trên luồng chính. Bạn có thể bắt đầu và xử lý công việc một cách không đồng bộ. Khi hoàn tất, bạn nên cập nhậtListenableFuture
cho phù hợp. Các cách triển khai tham chiếu củaListenableFuture
được cung cấp trong góiFutures
ởalpha02
(xem bên dưới phầnWorkManager
).Worker
mở rộngListenableWorker
và vẫn hoạt động như trước đây, bằng phương thứcResult doWork()
trừu tượng.- Đảo ngẫu nhiên một số phương thức và thành phần từ
Worker
đếnListenableWorker
. - Chúng tôi sẽ sớm cung cấp các triển khai tham chiếu cho
ListenableWorker
sử dụng Kotlin coroutine (khi các phiên bản ổn định đã được phát hành) và RxJava2.
- Giao diện
WorkerFactory
và cách triển khai cụ thểDefaultWorkerFactory
đã được hợp nhất với một lớp trừu tượng có tên làWorkerFactory
. Quá trình triển khai đảm bảo hành vi dựa trên phản ánh mặc định được gọi là nỗ lực cuối cùng đối với mọi phiên bảnWorkerFactory
do người dùng tạo. Đây là một thay đổi có thể gây lỗi. - Xoá
WorkManager.synchronous()
,WorkContinuation.synchronous()
và tất cả phương thức liên quan. ThêmListenableFuture<Void>
làm kiểu trả về của nhiều phương thức về API. Đây là một thay đổi về API có thể gây lỗi.- Bạn hiện có thể lấy và quan sát một cách đồng bộ bằng cách sử dụng
ListenableFuture
. Ví dụ nhưWorkManager.enqueue()
dùng để trả vềvoid
; mã này hiện trả vềListenableFuture<Void>
. Bạn có thể gọiListenableFuture.addListener(Runnable, Executor)
hoặcListenableFuture.get()
để chạy mã khi hoạt động này hoàn tất. - Vui lòng lưu ý những
ListenableFuture
này không cho bạn biết thao tác thành công hay không; chỉ cho biết việc đã hoàn tất. Bạn vẫn cần phải kết nối các phương thức WorkManager để tìm hiểu thông tin này. - Chúng tôi bỏ qua các lệnh gọi
cancel()
trên các đối tượng này, vì dễ gây nhầm lẫn và khó giải thích (bạn đang huỷ hành động hay công việc được thực hiện?). Điều này nằm trong hợp đồngFuture
. - Để duy trì sự đồng nhất với các phương thức
getStatus*
đồng bộ, chúng tôi đã cung cấp các biến thểListenableFuture
và đổi tên các biến thể hiện có đã trả lạiLiveData
để có "LiveData" một cách rõ ràng dưới dạng một phần của tên (chẳng hạn nhưgetStatusesByIdLiveData(UUID)
). Đây là một thay đổi về API có thể gây lỗi.
- Bạn hiện có thể lấy và quan sát một cách đồng bộ bằng cách sử dụng
Sửa lỗi
- Khắc phục một vấn đề đã được nhận biết từ phiên bản alpha09 về các tệp
androidx-annotations.pro
trùng lặp. Bạn có thể xoá phương án giải quyết khỏi ghi chú phát hành trước đây bằng cách xoáexclude 'META-INF/proguard/androidx-annotations.pro'
khỏi tệp gradle của mình. - Thêm các cấu hình ProGuard để giữ lại hàm khởi tạo
Worker
mới. b/116296569 - Khắc phục
NullPointerException
có khả năng xảy ra trong một tình huống tương tranh mà công việc bịREPLACE
. b/116253486 và b/116677275 WorkContinuation.combine()
hiện chấp nhận một hoặc nhiềuWorkContinuation
thay vì hai hoặc nhiều. b/117266752
Thay đổi về API có thể gây lỗi
- Xoá mọi phương thức và lớp
deprecated
trước đây, đặc biệt là hàm khởi tạoWorker
mặc định. - Giao diện
WorkerFactory
và cách triển khai cụ thểDefaultWorkerFactory
đã được hợp nhất với một lớp trừu tượng có tên làWorkerFactory
. - Xoá
WorkManager.synchronous()
vàWorkContinuation.synchronous()
. - Các phương thức
WorkManager.getStatus*()
nay trả vềListenableFuture
.WorkManager.getStatus*LiveData()
trả về cácLiveData
.
Futures
Phát hành Futures 1.0.0-alpha02
.
Thay đổi về API
- Giờ đây, nhà phát triển có thể sử dụng
ResolvableFuture
vàAbstractResolvableFuture
làmListenableFuture
cách triển khai bê tông nhẹ.
Ngày 8 tháng 10 năm 2018
Room
Phát hành Room 2.1.0-alpha01
.
Tính năng mới
- FTS: Room hiện hỗ trợ các thực thể có bảng FTS3 hoặc FTS4 liên kết. Các lớp được chú thích bằng
@Entity
nay có thể được chú thích thêm bằng@Fts3
hoặc@Fts4
để khai báo lớp có bảng tìm kiếm dạng văn bản đầy đủ. Các tuỳ chọn FTS để tuỳ chỉnh thêm hiện có sẵn thông qua các phương thức của chú giải. b/62356416 - Khung hiển thị (View): Room hiện hỗ trợ việc khai báo một lớp như là một truy vấn đã lưu, còn gọi là khung hiển thị, bằng cách sử dụng chú giải @DatabaseView. b/67033276
- Giá trị tự động: Room hiện hỗ trợ khai báo các lớp có chú giải AutoValue dưới dạng thực thể và POJO. Giờ đây, bạn có thể khai báo các chú thích
@PrimaryKey
,@ColumnInfo
,@Embedded
và@Relation
trong Room theo phương thức trừu tượng của lớp có giá trị tự động được chú thích. Lưu ý rằng chú giải này cũng phải đi kèm với@CopyAnnotations
cho Room để hiểu đúng các chú giải. b/62408420 - Hỗ trợ loại dữ liệu trả về Rx bổ sung: Phương thức DAO được chú thích bằng
@Insert
,@Delete
hoặc@Update
nay hỗ trợ cả các loại dữ liệu trả về RxCompletable
,Single<T>
vàMaybe<T>
. b/63317956 - Các loại không thể thay đổi với
@Relation
: Trước đây Room yêu cầu các trường chú thích@Relation
bắt buộc phải có thể đặt được, nhưng giờ đây chúng có thể là các tham số của hàm khởi tạo. enableMultiInstanceInvalidation
: Là một API mới trongRoomDatabase.Builder
để cho phép vô hiệu hoá nhiều thực thể của RoomDatabase bằng cách sử dụng cùng một tệp cơ sở dữ liệu. Cơ chế vô hiệu hoá nhiều phiên bản này cũng hoạt động trên nhiều quy trình. b/62334005fallbackToDestructiveMigrationOnDowngrade
: Là một API mới trongRoomDatabase.Builder
để tự động tạo lại cơ sở dữ liệu nếu quá trình hạ cấp diễn ra. b/110416954ignoredColumns
: Là một API mới trong chú thích@Entity
có thể dùng để liệt kê các trường bị bỏ qua theo tên. Hữu ích khi bỏ qua các trường kế thừa trên một thực thể. b/63522075
Thay đổi về API/Hành vi
mCallback
vàmDatabase
trongRoomDatabase
nay là@Deprecated
và sẽ bị xoá trong phiên bản mới của Room. b/76109329
Sửa lỗi
- Khắc phục 2 vấn đề khi Room không khôi phục đúng cách từ một cơ sở dữ liệu bị hỏng hoặc quá trình di chuyển không hợp lệ trong khi khởi động. b/111504749 và b/111519144
- Hiện Room sẽ sử dụng đúng hàm khởi tạo chính của Kotlin trong các lớp dữ liệu, giúp bạn không cần phải khai báo các trường dưới dạng
vars
. b/105769985
Ngày 1 tháng 10 năm 2018
Room 2.0.0
được huỷ đặt mà không có thay đổi nào từ 2.0.0-rc01
.
Phát hành phiên bản 2.0.0
khi phát hành một bản sửa lỗi duy nhất.
Paging
Sửa lỗi
- Khắc phục sự cố có thể xảy ra khi cuộn rất nhanh bằng
PositionalDataSource
và phần giữ chỗ b/114635383.
Ngày 21 tháng 9 năm 2018
Lifecycle 2.0.0
được phát hành kèm theo một bản sửa lỗi từ 2.0.0-rc01
trong ViewModel.
Lifecycle
Sửa lỗi
- Khắc phục quy tắc bảo vệ ViewModel đã xoá không chính xác các hàm khởi tạo b/112230489
Ngày 20 tháng 9 năm 2018
Navigation
Navigation 1.0.0-alpha06
đã được phát hành kèm theo các bản sửa lỗi và nội dung thay đổi về API.
Tính năng mới
- Hỗ trợ chuyển đổi phần tử được chia sẻ cho các đích Activity và Fragment b/79665225. Để biết thêm thông tin, hãy xem phần Triển khai điều hướng bằng Thành phần kiến trúc Navigation
- Giờ đây, việc chọn một mục trong
NavigationView
sẽ đóng trang tính dưới cùng chứa b/112158843
Thay đổi về API
- Sự thay đổi có thể gây lỗi: Phương thức
navigate()
của Trình điều hướng hiện sẽ nhận tham sốNavigator.Extras
. - Phương thức
getGraph()
của NavController hiện làNonNull
b/112243286
Sửa lỗi
NavigationUI.setupWithNavController()
không còn rò rỉ khung hiển thị nếu sử dụng cùng với khung hiển thị từ các đích đến riêng lẻ b/111961977- Trình điều hướng
onSaveState()
hiện chỉ được gọi một lần b/112627079
Safe Args
- Các lớp Directions (Chỉ dẫn) đích của Navigation hiện mở rộng lớp Directions của phần tử mẹ nếu có sẵn b/79871405
- Giờ đây, các lớp Navigation và Args triển khai
toString()
hữu ích b/111843389
Ngày 19 tháng 9 năm 2018
WorkManager
WorkManager 1.0.0-alpha09
được phát hành cùng với các bản sửa lỗi, bản cập nhật cơ sở hạ tầng và thay đổi API.
Vấn đề đã biết
Nếu bạn gặp phải vấn đề sau: "More than one file was found with OS independent path 'META-INF/proguard/androidx-annotations.pro'" (Đã tìm thấy nhiều tệp bằng đường dẫn độc lập của hệ điều hành 'META-INF/proguard/androidx-annotations.pro'), vui lòng đưa giải pháp dưới đây vào tệp gradle như một giải pháp tạm thời trong khi chúng tôi sửa lỗi trong alpha10:
Groovy
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
Sửa lỗi
- Thêm một bản sửa lỗi khác cần thiết đối với lỗi "100 công việc". b/115560696
- Đã bổ sung một số phần sửa lỗi đối với các lỗi ràng buộc về khoá ngoại (foreign key constraint errors) gây ra bởi tình trạng tương tranh (race condition). b/114705286
- Đã uỷ quyền các lệnh gọi
ConstraintTrackingWorker.onStopped(boolean)
tớiWorker
cơ bản. b/114125093 - Thực hiện thời gian trì hoãn tối thiểu chính xác cho Firebase JobDispatcher. b/113304626
- Cải tiến việc đảm bảo phân luồng nội bộ đối với thư viện.
- Khắc phục vấn đề tiềm ẩn khi loại bỏ
LiveData
nội bộ.
Các thay đổi về API
- Bạn hiện có thể tạo phiên bản
Worker
của riêng mình trong thời gian chạy bằng cách chỉ địnhWorkerFactory
trongWorkManager.Configuration
. Trạng thái ban đầu dự phòng làDefaultWorkerFactory
, khớp với hành vi của các phiên bản WorkManager trước đây.- Hàm khởi tạo mặc định cho
Worker
vàNonBlockingWorker
hiện được đánh dấu là không dùng nữa. Vui lòng sử dụng hàm khởi tạo mới (Worker(Context, WorkerParameters)
) và gọisuper(Context, WorkerParameters)
; các phiên bản tương lai của WorkManager sẽ xoá hàm khởi tạo mặc định.
- Hàm khởi tạo mặc định cho
- Chúng tôi đã bắt đầu sử dụng cấu phần phần mềm
ListenableFuture
mới trong nội bộ (không có phần phụ thuộc Guava). Chúng tôi sẽ giới thiệu ListenableFutures với API trong các bản phát hành sắp tới. Thay đổi này sẽ hỗ trợ hiển thị sự kiện sau cùng củaNonBlockingWorker
. - Thêm khả năng kích hoạt công việc được tính giờ trong
TestDriver
thông quaTestDriver.setInitialDelayMet(UUID)
vàTestDriver.setPeriodDelayMet(UUID)
. b/113360060
Thay đổi có thể gây lỗi
- Ngừng sử dụng hàm khởi tạo
Worker
vàNonBlockingWorker
mặc định. Vui lòng chuyển sang hàm khởi tạo mới sớm nhất có thể. Các phiên bản trong tương lai sẽ xoá hàm khởi tạo mặc định.
Ngày 27 tháng 8 năm 2018
WorkManager
WorkManager 1.0.0-alpha08
được phát hành cùng với các bản sửa lỗi.
Sửa lỗi
- Các thành phần WorkManager được gắn nhãn rõ ràng là khởi động trực tiếp mà không hề hay biết để chúng không kích hoạt trong khi khởi động trực tiếp. Trong tương lai, chúng tôi sẽ cung cấp một phiên bản WorkManager mà người dùng có thể khởi động trực tiếp. b/112665532
- Sửa lỗi công việc được thử lại không chạy. b/112604021
- Khắc phục lỗi công việc định kỳ không được thực thi lặp lại (liên quan đến vấn đề trên). b/112859683
- Ghi nhớ các chính sách giảm giá khi quy trình ứng dụng đang chạy.
- Sửa các thông báo ngoại lệ trong
Data
để chỉ ra giới hạn là 10 KB. - Giảm giá trị tối đa
Configuration.setMaxSchedulerLimit(int)
xuống còn 50 để tính đến độ trễ khi xử lýJobScheduler
. b/112817355
Ngày 16 tháng 8 năm 2018
WorkManager
WorkManager 1.0.0-alpha07
được phát hành cùng với các bản sửa lỗi và nội dung thay đổi nhỏ về API.
Sửa lỗi
- Khắc phục một truy vấn SQL có thể có giới hạn âm và có thể trả về một số lượng kết quả không liên kết.
- Công việc đã hoàn tất thực thi hiện đang huỷ một cách chính xác mọi bản sao đang chờ xử lý của chính công việc đó trong các Trình lập lịch biểu khác. Điều này đã dẫn đến việc vượt quá giới hạn
JobScheduler
việc làm. b/111569265 - Sửa một
ConcurrentModificationException
trongConstraintTracker
. b/112272753 - Thay đổi các chú thích kiểu trả về của
Data.getBooleanArray(String)
vàData.getIntArray(String)
thành@Nullable
thay vì@NonNull
. b/112275229
Các thay đổi về API
Worker
hiện mở rộng một lớp mới làNonBlockingWorker
. Điều này không ảnh hưởng đến mọi hoạt động sử dụng hiện tại. Trong tương lai,NonBlockingWorker
sẽ trở thành một thực thể được hỗ trợ đầy đủ dành cho các giải pháp phân luồng tuỳ chỉnh.- Thay đổi các chú thích kiểu trả về của
Data.getBooleanArray(String)
vàData.getIntArray(String)
thành@Nullable
thay vì@NonNull
. b/112275229 - Tiện ích Kotlin: ngừng sử dụng
Map.toWorkData()
và thêmworkDataOf(vararg Pair<String, Any?>)
cấp cao nhất để nhất quán hơn với các API hiện có.
Ngày 10 tháng 8 năm 2018
Navigation
Navigation 1.0.0-alpha05
đã được phát hành cùng với các bản sửa lỗi.
Sửa lỗi
- Khắc phục lỗi gây ra hành vi chèn lấp không chính xác. b/111907708
- Sửa lỗi trong
equals()
lớp Args đã tạo. b/111450897 - Sửa lỗi trong phiên bản Safe Args. b/109409713
- Khắc phục vấn đề về lượt chuyển đổi từ giá trị nhận dạng tài nguyên thành tên java b/111602491
- Khắc phục thông báo lỗi về tính chất rỗng trong trình bổ trợ Safe Args.
- Thêm chú thích về giá trị rỗng bị thiếu.
Ngày 6 tháng 8 năm 2018
Các phiên bản AndroidX của bản phát hành Lifecycle, Room và Paging phiên bản 2.0.0-rc01
. Tất cả cấu phần phần mềm đều không thay đổi từ 2.0.0-beta01
.
Ngày 1 tháng 8 năm 2018
WorkManager
WorkManager 1.0.0-alpha06
được phát hành cùng với các bản sửa lỗi.
Sửa lỗi
- Ngăn chặn việc khoá cơ sở dữ liệu khi lên lịch công việc. b/111801342
- Sửa lỗi khiến
PeriodicWork
không chạy được theo lịch khi ở Chế độ nghỉ (Doze). b/111469837 - Khắc phục một tình huống tương tranh khi theo dõi các quy tắc ràng buộc khiến
WorkManager
gặp sự cố. googleclassrooms/android-workmanager/issues/56 - Tạo
WorkRequest
duy nhất khi sử dụngWorkRequest.Builder#build()
. b/111408337 - Chỉ cho phép sử dụng
RescheduleReceiver
khi cóWorkRequest
cần đến. b/111765853
Ngày 24 tháng 7 năm 2018
WorkManager
WorkManager 1.0.0-alpha05
đã được phát hành với các bản sửa lỗi quan trọng và thay đổi về nhật ký.
Thay đổi về API
WorkManager.getInstance()
nay được chú thích bằng@NonNull
thay vì@Nullable
. Thay vào đó, nếu singleton không được khởi chạy đúng cách trong trường hợp khởi chạy thủ công, phương thức này sẽ gửi mộtIllegalStateException
. Đây là một thay đổi về API có thể gây lỗi.- Thêm một API mới,
Configuration.Builder.setMinimumLoggingLevel(int)
, có thể kiểm soát độ chi tiết của WorkManager. Theo mặc định, WorkManager ghi nhật kýLog.INFO
trở lên. - Thay đổi chữ ký của
Data.getString()
để không sử dụng giá trị mặc định nữa (giá trị mặc định này được ngầm hiểu lànull
). Đây là một thay đổi về API có thể gây lỗi. - Đánh dấu một số phương thức chỉ cần thiết để sử dụng nội bộ là
@hide
. Bao gồm hàm khởi tạoConstraints
,Data.toByteArray()
vàData.fromByteArray(byte[])
. Đây là một thay đổi về API có thể gây lỗi.
Sửa lỗi
- WorkManager không còn thực thi công việc trong trường hợp đã biết là tự động sao lưu. Việc này có thể đã dẫn đến sự cố. b/110564377
- Sửa lỗi lên lịch kép (double-scheduling) các
PeriodicWorkRequest
khi sử dụngJobScheduler
. b/110798652 - Khắc phục vấn đề
PeriodicWorkRequest
không thực thi chính xác sau khi thiết bị nghỉ ngơi (doze). b/111469837 - Khắc phục vấn đề về độ trễ ban đầu khi sử dụng Firebase JobDispatcher. b/111141023
- Khắc phục một số vấn đề có thể xảy ra liên quan đến thời gian và điều kiện tương tranh.
- Giải phóng đúng cách các
BroadcastReceiver
không còn cần thiết. - Tối ưu hoá hiệu quả lập lịch biểu lại khi ứng dụng khởi động lại sau khi bị buộc đóng.
- Cho phép gọi
TestScheduler.setAllConstraintsMet(UUID)
trước hoặc sau khi xếp hàngWorkRequest
nhất định. b/111238024
Thay đổi có thể gây lỗi
WorkManager.getInstance()
nay được chú thích bằng@NonNull
thay vì@Nullable
.- Thay đổi chữ ký của
Data.getString()
để không sử dụng giá trị mặc định nữa (giá trị mặc định này được ngầm hiểu lànull
). - Đánh dấu một số phương thức chỉ cần thiết để sử dụng nội bộ là
@hide
. Bao gồm hàm khởi tạoConstraints
,Data.toByteArray()
vàData.fromByteArray(byte[])
.
Ngày 19 tháng 7 năm 2018
Navigation
Navigation 1.0.0-alpha04
và trình bổ trợ gradle của Safe Args liên kết chứa một số thay đổi về API, các thay đổi về hành vi và các bản sửa lỗi.
Thay đổi về API/Hành vi
- NavHostFragment sẽ luôn đặt Fragment hiện tại làm mảnh điều hướng chính, đảm bảo rằng trình quản lý mảnh con được bật lên trước khi NavController bên ngoài được kích hoạt b/111345778
Safe Args
- Thay đổi có thể gây lỗi:
app:type
đã được thay đổi thànhapp:argType
để tránh xung đột với các thư viện khác như ConstraintLayout 2.0.0-alpha1b/111110548 - Bây giờ, bạn có thể nhấp vào các thông báo lỗi trong Safe Args b/111534438
- Lớp Args hiện xác nhận rằng các thuộc tính
NonNull
thực tế không phải là giá trị rỗng b/111451769 - Thêm các chú thích
NonNull
bổ sung vào NavDirections và các lớp được tạo bằng Arg b/111455455 b/111455456
Sửa lỗi
- Khắc phục vấn đề về nút quay lại của hệ thống sau khi liên kết sâu với đích của mảnh b/111515685
Ngày 12 tháng 7 năm 2018
Navigation
Navigation 1.0.0-alpha03
và trình bổ trợ gradle của Safe Args liên kết chứa một số thay đổi về API, các thay đổi về hành vi và các bản sửa lỗi.
Thay đổi về API/Hành vi
- Thêm phương thức NavigationUI.setupWithNavController cho Thanh công cụ b/109868820
- Thêm phương thức NavigationUI.setupWithNavController cho CollapsingToolbarLayout b/110887183
- popBackStack() hiện trả về false khi ngăn xếp lui trống hoặc khi mã nhận dạng đích đã cho không nằm trong ngăn xếp lui b/110893637
- FragmentNavigator hiện bỏ qua các thao tác điều hướng sau khi FragmentManager lưu trạng thái, tránh trường hợp ngoại lệ “Không thể thực hiện hành động này sau onSaveInstanceState” b/110987825
Safe Args
- Thay đổi có thể gây lỗi: Các ký tự không phải chữ và số trong tên hành động và đối số sẽ được thay thế bằng cách viết hoa camel trong tên phương thức NavDirections tương ứng
- Ví dụ:
DemoController.index
sẽ trở thànhsetDemoControllerIndex
b/79995048 - Ví dụ:
action_show_settings
sẽ trở thànhactionShowSettings
b/79642240
- Ví dụ:
- Thay đổi có thể gây lỗi: Theo mặc định, các đối số được xem là không có giá trị rỗng. Để cho phép các giá trị rỗng trên chuỗi và đối số có thể lập trình, hãy thêm
app:nullable="true"
b/79642307 - Hiện tại, bạn có thể sử dụng
app:type="long"
với defaultValues dưới dạng “123L” b/79563966 - Giờ đây, bạn có thể sử dụng tên lớp đủ điều kiện cho
app:type
đối số có thể phân phối. Giá trị mặc định duy nhất được hỗ trợ là"@null"
b/79563966 - Các lớp Args nay triển khai
equals()
vàhashCode()
b/79642246 - Hiện tại, bạn có thể sử dụng trình bổ trợ Safe Args cho các dự án thư viện b/80036553
- Bạn hiện có thể áp dụng trình bổ trợ Safe Args cho các dự án tính năng b/110011752
Sửa lỗi
- Đã khắc phục vấn đề khi điều hướng trong phương thức trong vòng đời của Fragment b/109916080
- Khắc phục sự cố điều hướng nhiều lần qua các biểu đồ lồng nhau b/110178671
- Đã khắc phục vấn đề khi sử dụng
setPopUpTo
với đích đầu tiên trong biểu đồ b/109909461 - Khắc phục sự cố khi chuyển tất cả giá trị
app:defaultValue
dưới dạng Chuỗi b/110710788 - aapt2 đi kèm với Trình bổ trợ Android cho Gradle 3.2 Beta 01 hiện thêm các quy tắc giữ cho mỗi thuộc tính
android:name
trong các tệp XML điều hướng b/79874119 - Khắc phục sự cố rò rỉ bộ nhớ khi thay thế FragmentNavigator mặc định b/110900142
Ngày 2 tháng 7 năm 2018
Các phiên bản AndroidX của bản phát hành Lifecycle, Room và Paging phiên bản 2.0.0-beta01
.
Lifecycle
Sửa lỗi
- Khắc phục quy tắc bảo vệ LifecycleObserver proguard để chỉ giữ một phương thức triển khai, chứ không phải giao diện phụ b/71389427
- Khắc phục các quy tắc bảo vệ ViewMode để cho phép làm rối và rút gọn.
Room
Thay đổi về API/Hành vi
- Thêm
RoomDatabase.Builder.setQueryExecutor()
để cho phép tuỳ chỉnh vị trí chạy truy vấn - Bổ sung tính năng hỗ trợ RxJava2
Observable
- Các quá trình triển khai DAO và Database đã tạo hiện đã hoàn tất
Sửa lỗi
- Chỉ định tên lớp/trường trong lỗi "không tìm thấy phương thức getter cho trường" b/73334503
- Có RoomOpenHelper tương thích ngược với các phiên bản cũ của Room b/110197391
Paging
Sửa lỗi
- Nội dung đã khắc phục sẽ biến mất trong một số trường hợp bổ sung (phần giữ chỗ bị tắt, PositionalDataSource) b/80149146
- (Đã được phát hành trong
1.0.1
) Khắc phục các sự cố xảy ra khiPagedListAdapter
vàAsyncPagedListDiffer
sẽ không báo hiệu cho thấy các sự kiện di chuyển. b/110711937
Ngày 26 tháng 6 năm 2018
Paging
Phát hành Paging 1.0.1
bằng một bản sửa lỗi duy nhất trong runtime
. Bạn nên sử dụng 1.0.1
để đảm bảo độ ổn định. Paging RxJava2 1.0.1
cũng được phát hành và giống với 1.0.0-rc1
.
Sửa lỗi
- Khắc phục các sự cố xảy ra khi
PagedListAdapter
vàAsyncPagedListDiffer
không báo hiệu được sự kiện di chuyển. b/110711937
WorkManager
Phát hành WorkManager 1.0.0-alpha04
.
Sửa lỗi
PeriodicWorkRequest
đã được lên lịch lại chính xác khi sử dụng phương thức triển khai dựa trênAlarmManager
.Sửa lỗi ANR có thể xảy ra khi lên lịch lại cho tất cả trình thực thi sau khi buộc dừng hoặc khởi động lại. b/110507716
Thêm các chú thích thuộc tính rỗng vào nhiều API WorkManager. b/110344065
Ghi các trường hợp ngoại lệ chưa nắm bắt được xảy ra trong quá trình thực hiện trình thực thi. b/109900862
Cho phép di chuyển cơ sở dữ liệu phá hoại trong trường hợp bạn quyết định khôi phục phiên bản WorkManager cũ. b/74633270
Khắc phục sự cố di chuyển nếu bạn tạo thẻ ẩn trùng lặp. Đây là một vấn đề rất hiếm khi xảy ra nếu bạn đã tự sử dụng cùng một định dạng thẻ ẩn.
Ngày 19 tháng 6 năm 2018
Room
Phát hành Room 1.1.1
. Bản phát hành này giống với Room 1.1.1-rc1
.
WorkManager
Phát hành WorkManager 1.0.0-alpha03
.
Sửa lỗi
Khắc phục một điều kiện tương tranh (race condition) trong phương thức triển khai dựa trên
AlarmManager
. b/80346526.Khắc phục sự cố trùng lặp khi sử dụng
JobScheduler
sau khi khởi động lại thiết bị.Việc làm có kích hoạt URI nội dung giờ đây vẫn tồn tại sau mỗi lần khởi động lại. b/80234744
Các lần cập nhật tài liệu. b/109827628, b/109758949, b/80230748
Khắc phục sự cố khi sắp xếp lại một
WorkRequest
. b/109572353.Khắc phục các cảnh báo của trình biên dịch Kotlin khi sử dụng phần phụ thuộc
work-runtime-ktx
.WorkManager hiện sử dụng
Room
phiên bản1.1.1-rc1
.
Các thay đổi về API
Thêm
getStatusesSync()
, phiên bản đồng bộ hoá củaWorkContinuation.getStatuses()
.Worker
có khả năng phân biệt giữa quá trình huỷ do người dùng thực hiện và tạm thời huỷ theo yêu cầu của hệ điều hành.Worker.isStopped()
trả vềtrue
nếu có yêu cầu ngừng bất kỳ loại yêu cầu nào.Worker.isCancelled()
trả vềtrue
khi công việc đã bị huỷ bỏ một cách rõ ràng. b/79632247Thêm tuỳ chọn hỗ trợ cho jobParameters#getNetwork() trên API 28. Thông tin này được tiết lộ qua
Worker.getNetwork()
.Thêm
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)
để bạn có thể kiểm soát số lượng lệnh được gửi đếnJobScheduler
hoặcAlarmManager
. Điều này giúp ngănWorkManager
sử dụng tất cảJobScheduler
còn trống của bạn.Thêm
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)
giúp khai báo một loạtJobScheduler
ID công việc một cách an toàn để choWorkManager
có thể sử dụng. b/79996760Worker.getRunAttemptCount()
trả về số lần chạy hiện tại cho mộtWorker
nhất định. b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)
cho phép bạn thêm mộtPeriodicWorkRequest
duy nhất vào hàng đợi. b/79600647WorkManager.cancelAllWork()
huỷ bỏ tất cảWorker
. Các thư viện phụ thuộc vàoWorkManager
có thể truy vấn thời điểm phương thức này được gọi lần cuối bằng cách sử dụngWorkManager.getLastCancelAllTimeMillis()
để xoá thêm trạng thái nội bộ.Thêm
WorkManager.pruneWork()
để xoá các công việc đã hoàn thành khỏi cơ sở dữ liệu nội bộ. b/79950952, b/109710758
Các thay đổi về hành vi
- Thêm một thẻ ngầm ẩn cho tất cả
WorkRequest
, thẻ này cũng đủ điều kiện để trở thành tên lớp củaWorker
. Điều này cho phép xoá cácWorkRequest
không có cáctag
hoặc khiid
không có sẵn. b/109572351
Thay đổi có thể gây lỗi
Đổi tên
Worker.WorkerResult
thànhWorker.Result
.Worker.onStopped
hiện đã có một tham số bổ sungisCancelled
được đặt thànhtrue
khiWorker
đã bị huỷ một cách rõ ràng.
Ngày 7 tháng 6 năm 2018
Phát hành Navigation 1.0.0-alpha02
.
Navigation
Thay đổi về hành vi
FragmentNavigator
hiện đang sử dụngsetReorderingAllowed(true)
. b/109826220Navigation giờ đây URLDecodes các đối số được phân tích cú pháp từ các URL đường liên kết sâu. b/79982454
Sửa lỗi
Đã sửa
IllegalStateException
khi gọi điều hướng từ các phương thức trong vòng đời của Fragment. b/79632233Hiện tại, Navigation phụ thuộc vào Thư viện hỗ trợ 27.1.1 để khắc phục việc nhấp nháy khi sử dụng ảnh động. b/80160903
Khắc phục
IllegalArgumentException
khi sử dụng defaultNavHost="true" làm mảnh con. b/79656847Sửa lỗi
StackOverflowError
khi sử dụng NavDeepLinkBuilder. b/109653065Sửa lỗi
IllegalArgumentException
khi quay lại biểu đồ lồng. b/80453447Khắc phục sự cố các mảnh bị trùng lặp khi sử dụng
launchSingleTop
. b/79407969Bây giờ, Navigation sẽ xây dựng ngăn xếp lui tổng hợp chính xác cho các biểu đồ lồng nhau. b/79734195
Bây giờ, NavigationUI sẽ làm nổi bật mục chính xác khi sử dụng biểu đồ lồng nhau dưới dạng
MenuItem
. b/109675998
Thay đổi về API
Thuộc tính
clearTask
cho các hành động và API liên kết trongNavOptions
không được dùng nữa. b/80338878Thuộc tính
launchDocument
cho các hành động và API liên kết trongNavOptions
không còn được dùng nữa. b/109806636
Ngày 24 tháng 5 năm 2018
Phát hành WorkManager 1.0.0-alpha02
.
WorkManager
Sửa lỗi
Sửa một
NullPointerException
trênState.isFinished()
. b/79550068Sửa lỗi khiến các
Worker
được lên lịch lại trênApplication.onCreate()
. b/79660657Sửa lỗi khiến bạn có thể lên lịch công việc nhiều hơn mức mà hệ điều hành cho phép. b/79497378
Chuyển việc dọn dẹp các khoá chế độ thức (wake lock) được liên kết với các
Worker
sang luồng nền.Quá trình triển khai
AlarmManager
hiện xoá đúng cách khi tất cả công việc đang chờ xử lý hoàn tất.Khắc phục bằng cách dọn dẹp các truy vấn SQL ảnh hưởng đến các ngôn ngữ không phải tiếng Anh. b/80065360
Thêm tính năng hỗ trợ cho các
float
trongData
. b/79443878Data.Builder.putAll()
hiện trả về một thực thể củaBuilder
. b/79699162Hiển thị thêm Javadoc và bản sửa lỗi trong tài liệu. b/79691663
Các thay đổi về API
Worker
có thể phản ứng với việc bị chặn. Bạn có thể sử dụngWorker.isStopped()
để kiểm tra xemWorker
đã bị ngừng hay chưa. Có thể dùngWorker.onStopped()
để thực hiện các thao tác dọn dẹp nhẹ.API
Worker.getTags()
trả về mộtSet
thẻ được liên kết vớiWorker
.Thêm các phương thức nạp chồng (overload)
javax.time.Duration
cho các API, kết hợp giữa thời lượng vàTimeUnit
. Trình bảo vệ:@RequiresApi(26)
.Các phần mở rộng
WorkManager
đã chuyển từ góiandroidx.work.ktx
sang góiandroidx.work
. Các phần mở rộng cũ sẽ không còn được sử dụng nữa và sẽ bị xoá trong các phiên bản sắp tới.Ngừng sử dụng
Configuration.withExecutor()
. Hãy chuyển sang sử dụngConfiguration.setExecutor()
.
Ngày 16 tháng 5 năm 2018
Phát hành Paging RxJava2 1.0.0-rc1
và Room 1.1.1-rc1
. Bạn nên
sử dụng Room 1.1.1-rc1
thay vì 1.1.0
nếu đang di chuyển.
Room
Khắc phục lỗi trong đó Room sẽ không xử lý đúng cách quy trình khởi chạy di chuyển bài đăng b/79362399
Paging
Paging rxjava2
sẽ chuyển sang ứng viên phát hành mà không có thay đổi nào trong phiên bản alpha ban đầu.
Ngày 8 tháng 5 năm 2018
Paging 1.0, Navigation và WorkManager Alphas, Room 1.1, AndroidX
Chúng tôi phát hành Paging 1.0.0
và Room 1.1.0
, cùng với alpha cho 2 Thành phần kiến trúc mới – Navigation và WorkManager.
Paging và Room không có thay đổi nào từ các ứng viên phát hành mới nhất.
Thư viện mới: Navigation
Navigation cung cấp một khung để tạo
thao tác trong ứng dụng. Bản phát hành đầu tiên này là 1.0.0-alpha01
.
Thư viện mới: WorkManager
WorkManager đơn giản hoá việc lập lịch và thực thi
hoạt động trong nền được đảm bảo, nhận biết được ràng buộc. Bản phát hành ban đầu này là
1.0.0-alpha01
.
AndroidX
Các thành phần kiến trúc sắp chuyển thành AndroidX, bao gồm cả tên gói, tên cấu phần phần mềm được cập nhật và các phần phụ thuộc trên những thư viện AndroidX khác.
Các tính năng này được phát hành dưới phiên bản 2.0.0-alpha1
để sử dụng cùng với các
Thư viện AndroidX.
Tiện ích Kotlin
Chế độ xem, mẫu ReactiveStreams và Sqlite (trước đây là thành phần "Database" của Room) đều có thêm các thư viện tiện ích Kotlin cho bản phát hành alpha của AndroidX. Ngoài ra, Navigation và WorkManager bao gồm các mô-đun -ktx. Bạn có thể tìm thấy nhiều mô-đun tiện ích trong số này trong phần thêm các thành phần.
Ngày 2 tháng 5 năm 2018
- Ứng viên phát hành Room 1.1.0
- Phát hành Room
1.1.0-rc1
.
Sửa lỗi
- Room hiện tương thích với Kotlin
1.2.40
. b/78328708
Ngày 19 tháng 4 năm 2018
Ứng viên phát hành Paging
Phát hành Paging 1.0.0-rc1
và Room 1.1.0-beta3
.
Paging
Chúng tôi không có thêm vấn đề nào đã biết hoặc các tính năng mới được lên lịch cho bản phát hành
Paging 1.0.0
. Vui lòng nâng cấp các dự án của bạn để sử dụng 1.0.0-rc1
, đồng thời giúp chúng tôi tiến hành thử nghiệm thành công để có thể mang lại trải nghiệm đáng tin cậy với phiên bản 1.0.0
.
Không có thay đổi nào trong bản phát hành này, bản phát hành này giống với 1.0.0-beta1
.
Room
Sửa lỗi
- Khắc phục lỗi biên dịch khi một Kotlin POJO tham chiếu đến một thực thể liên quan đã được xác định trong Java b/78199923
Ngày 5 tháng 4 năm 2018
Phát hành Room 1.1.0-beta2
, Paging 1.0.0-beta1
và Paging RxJava 1.0.0-alpha1
.
Paging sẽ ở phiên bản thử nghiệm trong một thời gian ngắn trước khi được phát hành.
Chúng tôi hiện không có kế hoạch thay đổi API cho Paging 1.0
và thanh điều khiển cho các thay đổi API là rất cao.
Hỗ trợ Alpha RxJava2 để Paging được phát hành dưới dạng mô-đun tuỳ chọn riêng (android.arch.paging:rxjava2:1.0.0-alpha1
) và sẽ tạm thời được tạo phiên bản riêng cho đến khi phiên bản này ổn định.
Thư viện mới này cung cấp phiên bản thay thế RxJava2 cho LivePagedListBuilder
, có khả năng tạo
Observable
và Flowable
giây, mất Scheduler
s thay vì 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
Tính năng mới
RxPagedListBuilder
được thêm thông qua cấu phần mềmandroid.arch.paging:rxjava2
mới.
Thay đổi về API
Thay đổi về API để làm rõ vai trò của người thi hành trong trình tạo:
Đổi tên
setBackgroundThreadExecutor()
thànhsetFetchExecutor()
(trongPagedList.Builder
vàLivePagedListBuilder
)Đổi tên
setMainThreadExecutor()
thànhsetNotifyExecutor()
(trongPagedList.Builder
).
Sửa thành viên
PagedList.mCallbacks
thành chế độ riêng tư.
Sửa lỗi
LivePagedListBuilder
kích hoạt lượt tảiPagedList
ban đầu trên trình thực thi đã chỉ định, thay vì nhóm chuỗi IO của thành phần Arch.Khắc phục hành vi không hợp lệ trong trình bao bọc
DataSource
nội bộ (được sử dụng để triển khaiDataSource.map
, cũng nhưPositionalDataSource
tắt trình giữ chỗ) b/77237534
Room
Sửa lỗi
Khắc phục một lỗi nghiêm trọng trong các hoạt động triển khai Rx
Single
vàMaybe
của Room, trong đó việc này sẽ lặp lại truy vấn trước, gây ra sự cố nếu bạn thêm nhiều hơn 1 trình quan sát choSingle
đã trả về hoặcMaybe
lần đăng nhập. b/76031240RoomDatabase.clearAllTables sẽ không
VACUUM
cơ sở dữ liệu nếu nó được gọi trong giao dịch.b/77235565
Ngày 21 tháng 3 năm 2018
Phát hành Room 1.1.0-beta1
, Paging 1.0.0-alpha7
và Lifecycles 1.1.1
.
Room
Thay đổi về API
- Dựa trên phản hồi về API Review,
@RawQuery
không chấp nhận việc chuyểnString
làm tham số truy vấn nữa. Bạn cần sử dụng SupportSQLiteQuery. (xem SimpleSQLiteQuery để dễ dàng tạo một phiên bản của SupportSQLiteQuery có chức năng hỗ trợ đối số). - Phương thức fallbackToDestructiveMigrationFrom của RoomDatabase.Builder hiện chấp nhận
vararg int
thay vìvararg Integer
.
Sửa lỗi
RoomDatabase.clearAllTables hiện cố gắng trả lại không gian cho hệ điều hành bằng cách đặt một điểm kiểm tra WAL và
VACUUM
cơ sở dữ liệu.@RawQuery
hiện chấp nhận mọi Pojo cho thuộc tínhobservedEntities
miễn là Pojo tham chiếu đến một hoặc nhiều thực thể qua các trườngEmbedded
hoặcRelation
của thuộc tính đó. b/74041772Paging: Việc triển khai DataSource của Room hiện xử lý chính xác các phần phụ thuộc nhiều bảng (chẳng hạn như quan hệ và liên kết). Trước đây, những kết quả này sẽ không kích hoạt được kết quả mới hoặc không biên soạn được. b/74128314
Lifecycles
Chỉ có một thay đổi nhỏ: chuyển android.arch.core.util.Function
từ arch:runtime
sang arch:common
. Điều này cho phép bạn sử dụng tiện ích này mà không cần phần phụ thuộc thời gian chạy, ví dụ: trong paging:common
dưới đây.
lifecycle:common
là phần phụ thuộc của lifecycle:runtime
, vì vậy thay đổi này không ảnh hưởng trực tiếp đến lifecycle:runtime
, mà chỉ ảnh hưởng đến các mô-đun phụ thuộc trực tiếp vào lifecycle:common
, như khi Paging.
Paging
Paging 1.0.0-alpha7
được phát hành cùng với Lifecycles 1.1.1
. Vì việc Paging alpha7 phụ thuộc vào việc di chuyển lớp Function
đã đề cập ở trên, nên bạn cần phải cập nhật phần phụ thuộc lifecycle:runtime
thành android.arch.lifecycle:runtime:1.1.1
.
Theo kế hoạch, Paging alpha7
sẽ là bản phát hành cuối cùng trước khi Paging sang beta.
Thay đổi về API
- Các đối tượng
DataSource.LoadParams
hiện có một hàm khởi tạo công khai và các đối tượngDataSource.LoadCallback
hiện đã mang tính trừu tượng. Thao tác này cho phép gói mộtDataSource
hoặc kiểm tra trực tiếp mộtDataSource
bằng một lệnh gọi lại mô phỏng. b/72600421 - Trình lập bản đồ cho DataSource và DataSource.Factory
map(Function<IN,OUT>)
cho phép bạn biến đổi, gói hoặc trang trí các kết quả doDataSource
tải.mapByPage(<List<IN>,List<OUT>>)
cho phép xử lý hàng loạt theo cách tương tự (ví dụ: khi các mục được tải từ SQL cần truy vấn thêm một cơ sở dữ liệu riêng biệt, có thể được thực hiện dưới dạng hàng loạt).
PagedList#getDataSource()
được thêm dưới dạng một phương thức b/72611341- Tất cả lớp không dùng nữa đã bị xóa khỏi API, bao gồm cả phần còn lại của gói
recyclerview.extensions
vàLivePagedListProvider
. DataSource.Factory
được thay đổi từ giao diện thành một lớp trừu tượng để bật chức năng bản đồ.
Sửa lỗi
- Thay đổi Trình tạo thành phiên bản chính thức. b/70848565
- Việc triển khai Room
DataSource
hiện đã được khắc phục để xử lý các truy vấn có nhiều bảng. Bản sửa lỗi này có trong Room 1.1.0 beta, vui lòng xem ở trên. - Khắc phục lỗi trong đó
BoundaryCallback.onItemAtEndLoaded
không được gọi choPositionalDataSource
nếu trình giữ chỗ được bật và tổng kích thước là bội số chính xác của kích thước trang.
Ngày 2 tháng 3 năm 2018
Phát hành Room 1.1.0-alpha3
. Đây là bản phát hành alpha gần đây nhất theo kế hoạch của
Room 1.1.0
.
Thay đổi về API
Phương thức
addObserver
vàremoveObserver
của InvalidationTracker hiện đang đồng bộ và cần được gọi trên một chuỗi không phải giao diện người dùng. Điều này giúp tránh được một số tình huống tương trang trong khi quan sát bảng.Có một phương thức
clearAllTables()
mới trên lớp RoomDatabase sẽ cắt bớt tất cả nội dung của bảng. b/63807999SupportSQLiteQuery
hiện có một phương thứcgetArgCount()
trả về số lượng tham số truy vấn. b/67038952
Sửa lỗi
@RawQuery
hiện được hỗ trợ đúng cách cho các truy vấn Paging. b/72600425Hiện tại, Room tạo đúng tên các lớp
Dao
để tránh xung đột tên khi 2 hoặc nhiều giao diệnDao
là các lớp bên trong trong cùng một gói và có cùng tên. b/73536380Các loại trường chung trong
Pojo
được phân tích cú pháp đúng cách là thành viên của lớp mở rộng. b/73534868Các tham số truy vấn trong giao diện
Dao
được kế thừa từ cấu phần phụ thuộc hiện được phân tích cú pháp đúng cách. b/68118746Các truy vấn được tạo cho
@Relation
hiện đã thoát đúng cách các tên trường. b/70925483
Ngày 27 tháng 2 năm 2018
Phát hành Paging 1.0.0-alpha6
cùng với bản phát hành Thư viện hỗ trợ 27.1.0.
ListAdapter
và một vài lớp liên quan đã được chuyển từ Thư viện Paging trực tiếp sang Recyclerview, cùng với một vài tên đổi để làm rõ chức năng của một số lớp. Việc phát hành Paging alpha này có thể là lần cuối cùng thay đổi đáng kể đối với tính năng phá vỡ API.
Thay đổi về API
- Các lớp chuyển sang recyclerview-v7:
ListAdapter
- Đổi tên các lớp và chuyển sang recyclerview-v7:
ListAdapterHelper
>AsyncListDiffer
ListAdapterConfig
->AsyncDifferConfig
DiffCallback
>DiffUtil.ItemCallback
- Các lớp được đổi tên bên trong thời gian chạy Paging:
PagedListAdapterHelper
>AsyncPagedListDiffer
Các lớp đã được di chuyển rất hữu ích cùng với RecyclerView, độc lập với Thư viện Paging. Điều này có nghĩa là bạn có thể sử dụng chúng mà không phụ thuộc vào bản phát hành Paging alpha, nhưng cũng có nghĩa là ứng dụng sử dụng Paging phải nâng cấp lên Alpha 6 và Thư viện hỗ trợ 27.1.0 cùng một lúc.
** Hướng dẫn di chuyển cho Paging alpha6: **
- Cập nhật các phần phụ thuộc Paging và recyclerview thành
android.arch.paging:runtime:1.0.0-alpha6
vàcom.android.support:recyclerview-v7:27.1.0
- bạn phải thực hiện những việc này cùng một lúc, do ListAdapter đã được chuyển từ Paging sang RecyclerView
- Cập nhật mọi tệp đối chiếu của
ListAdapterHelper
thànhAsyncListDiffer
getItem(index)
/getItemCount()
đã bị xoá, thay vào đó là mẫu gọigetCurrentList().getItem(index)
vàgetCurrentList().size()
rõ ràng hơn.
- Cập nhật mọi tham chiếu của
ListAdapterConfig
thànhAsyncDifferConfig
- Cập nhật mọi tham chiếu của
DiffCallback
thànhDiffUtil.IttemCallback
- Cập nhật mọi tham chiếu của
PagedListAdapterHelper
thànhAsyncPagedListDiffer
- Cập nhật mọi tham chiếu của
setList()
thànhsubmitList()
- đổi tên để làm rõ bản chất không đồng bộ của danh sách khác biệt
Sửa lỗi
- Khắc phục lỗi chuyển vị trí ban đầu không chính xác thành lượt tải ban đầu khi tắt trình giữ chỗ. b/73513780
Ngày 15 tháng 2 năm 2018
Phát hành Room 1.1.0-alpha2
.
Tính năng mới
Room hiện hỗ trợ việc mở cơ sở dữ liệu ở chế độ ghi nhật ký trước. Ở chế độ này, các bản ghi sẽ không còn chặn các cụm từ tìm kiếm của bạn nữa. Mặc dù chế độ này tiêu thụ nhiều bộ nhớ hơn (do có nhiều kết nối), nhưng chế độ này thường nhanh hơn. Theo mặc định, Room sẽ sử dụng WAL nếu thiết bị của bạn
API 16
trở lên và không phải là thiết bị có bộ nhớ thấp. Bạn có thể kiểm soát hành vi này bằng cách sử dụng phương thứcsetJournalMode()
trênRoomDatabase.Builder
. b/67757002Hỗ trợ Guava: Room hiện hỗ trợ trả về Guava
Optional<T>
hoặcListenableFuture<T>
trongDAO
cụm từ tìm kiếm. Để sử dụngListenableFuture<T>
, bạn cần nhậpguava
cấu phần phần mềm từ Room (android.arch.persistence.room:guava:1.1.0-alpha2
).Room hiện hỗ trợ trả lại
java.util.Optional<T>
từDAO
truy vấn.Phương thức giao diện với cách triển khai mặc định hiện được hỗ trợ trong các phương thức
@Transaction
trong lớpDAO
. Điều này áp dụng cho cảJava 8
vàKotlin
. b/72416735
Sửa lỗi
Các hàm khởi tạo có
@Relation
sẽ không gây ra lỗi biên dịch nếu có thể sử dụng một hàm khởi tạo khác. b/72884434Tên bảng được thoát bằng
'
trong các phương thức@Query
hiện đã được thoát đúng cách cho trình theo dõi hết hiệu lực. b/72366965Room hiện sử dụng các chú thích Kotlin
@Metadata
để đọc cấu trúc lớp trong quá trình xử lý chú thích. Điều này có nghĩa là ngay cả khi pojo được kế thừa từ phần phụ thuộc, thì tên tham số hàm khởi tạo vẫn có thể được đọc đúng cách. b/67181813Sự cố khi tìm đường dẫn di chuyển hạ cấp đã được khắc phục. b/72153525
Các loại cột không mặc định hiện được xử lý đúng cách khi di chuyển từ một cơ sở dữ liệu hiện có sang Room. b/71953987
Room hiện xử lý đúng cách các trường
boolean?
tồn tại trong các lớp Kotlin. b/72786402
January 22, 2018
Xoá các chu kỳ vòng đời của 1.1.0
, Room 1.1.0-alpha1
và Paging 1.0.0-alpha5
.
Lifecycle 1.1.0
Thay đổi về cách đóng gói
Hiện đã có các phần phụ thuộc mới nhỏ hơn nhiều:
android.arch.lifecycle:livedata:1.1.0
android.arch.lifecycle:viewmodel:1.1.0
Thay đổi API
LifecycleActivity
vàLifecycleFragment
không dùng nữa hiện đã bị xoá – vui lòng sử dụngFragmentActivity
,AppCompatActivity
hoặc hỗ trợFragment
.- Thêm chú thích
@NonNull
vàoViewModelProviders
vàViewModelStores
- Ngừng sử dụng hàm khởi tạo
ViewModelProviders
– vui lòng sử dụng trực tiếp các phương thức tĩnh ViewModelProviders.DefaultFactory
không còn được dùng nữa. Vui lòng sử dụngViewModelProvider.AndroidViewModelFactory
- Phương thức
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)
tĩnh được thêm vào để truy xuấtFactory
tĩnh thích hợp cho việc tạo các phiên bảnViewModel
vàAndroidViewModel
.
Room 1.1.0-alpha1
Tính năng mới
RawQuery
: API mới này cho phép các phương thức@Dao
nhận SQL dưới dạng tham số truy vấn b/62103290, b/71458963fallBackToDestructiveMigrationsFrom
: API mới này trongRoomDatabase.Builder
cho phép kiểm soát chi tiết hơn từ việc bắt đầu di chuyển có xoá các phiên bản giản đồ (so với fallbackToDestructiveMigration)b/64989640- Room hiện chỉ hỗ trợ Paging API (API Phân trang) mới hơn (alpha-4+), loại bỏ tính năng hỗ trợ phiên bản
LivePagedListProvider
không dùng nữa. Để sử dụng phiên bản Room alpha mới, bạn cần sử dụng pagingalpha-4
trở lên và chuyển từLivePagedListProvider
sangLivePagedListBuilder
nếu bạn chưa thực hiện.
Sửa lỗi
- Tăng cường hỗ trợ cho các loại Kotlin Kapt. b/69164099
- Thứ tự của các trường không làm mất hiệu lực giản đồ nữa. b/64290754
Paging 1.0.0-alpha5
Sửa lỗi
- Khắc phục sự cố tải trang khi trình giữ chỗ bị tắt b/70573345
- Ghi nhật ký bổ sung để theo dõi IllegalArgumentException b/70360195 (và việc sửa lỗi phía Room có tính duy đoán)
- Sửa mã mẫu Javadoc b/70411933, b/71467637
Ngày 11 tháng 12 năm 2017
Phát hành Paging alpha4-1
. Đây là một bản phát hành sửa lỗi nhỏ cho hoạt động Paging alpha 4.
Sửa lỗi
- Không kiểm tra tham số gọi lại cho các nguồn dữ liệu không hợp lệ. b/70353706, b/70360195
December 7, 2017
Phát hành Paging alpha4
với các thay đổi và bổ sung đáng kể, chủ yếu là
mạng nhắm mục tiêu và trường hợp sử dụng mạng + cơ sở dữ liệu.
Thay đổi về API
DataSource
hiện là một API không đồng bộ. Điều này giúp việc Paging trực tiếp từ mạng trở nên dễ dàng hơn:- Một điểm nhập cho kích thước và dữ liệu ban đầu
- Hỗ trợ thử lại mạng bằng cách giữ lại lệnh gọi lại và gửi sau
- Các lệnh gọi lại chuỗi an toàn cho phép tải không đồng bộ để tạo một mạng
được
PagedList
hỗ trợ trên chuỗi giao diện người dùng. - Hành vi lỗi rõ ràng hơn xung quanh tham số tải ban đầu
TiledDataSource
đổi tên thànhPositionalDataSource
để phản ánh việc lập chỉ mục dựa trên vị trí và thực tế là thẻ này không xếp chồng khi trình giữ chỗ bị tắt.PageKeyedDataSource
được thêm vào để hỗ trợ các mã thông báo tiếp theo/trước đó được nhúng trong các lần tải trang mạng.KeyedDataSource
đổi tên thànhItemKeyedDataSource
để làm rõ sự khác biệt.LivePagedListBuilder
vàDataSource.Factory
sẽ thay thếLivePagedListProvider
. Trình tạo này cung cấp khả năng tương tự với nhiều lựa chọn tuỳ chỉnh hơn và mặc định đơn giản hơn. Trạng thái ban đầu cho phép mã tạoDataSource
độc lập vớiLiveData
.Thêm
PagedList.BoundaryCallback
cho trường hợp sử dụng cơ sở dữ liệu + mạng.Hàm dựng
PagedList.Builder
sử dụngDataSource
+PagedList.Config
, nay tương tự nhưLivePagedListBuilder
và cho phép toán tử diamond bằng ngôn ngữ Java hoặc loại suy trong Kotlin.Thêm
PagedList.getConfig()
vàPagedList.Config
nay có các thuộc tính công khai dành cho thành viên.KeyedDataSource.loadBefore()
không mong đợi kết quả đảo ngược nữa.Thêm
PagedListAdapter.onCurrentListChanged()
để theo dõi nội dung cập nhật về PagedList đang được hiển thị.
Sửa lỗi
- Sửa IndexOutOfBoundsException trong PagedListAdapter(Helper) b/67883658
1.0.0 – Ngày 6 tháng 11 năm 2017
Tất cả thành phần chính (ngoại trừ Paging) hiện có giá là 1.0.0
. Đây là bản phát hành
chính xác giống như rc1
, ngoại trừ một thay đổi đối với thư viện reactivestreams
.
Sửa lỗi
LiveDataReactiveStreams
hiện đã triển khai đúng cách tham số Luồng phản ứng. b/67999342
Ứng viên phát hành – Ngày 18 tháng 10 năm 2017
Tất cả cấu phần phần mềm chính (ngoại trừ Paging) hiện là 1.0.0-rc1
.
Chúng tôi không xác định thêm vấn đề nào đã biết hoặc lên lịch phát hành các tính năng mới cho
1.0.0
. Vui lòng nâng cấp các dự án của bạn để sử dụng 1.0.0-rc1
và
giúp chúng tôi tiến hành thử nghiệm thành công và có thể mang đến trải nghiệm đáng tin cậy 1.0.0
.
Thay đổi về hành vi
- Với bản phát hành này,
Lifecycle.Event#ON_STOP
hiện được gửi đi khionSaveInstanceState
được gọi (trước đây, tệp này chỉ được đánh dấu làCREATED
mà không phải gửiON_STOP
). Bạn có thể đọc thêm về vấn đề này trong tài liệu về Lifecycle.
Sửa lỗi
Room:
- Hiện tại, Room phụ thuộc vào cấu phần phần mềm mới nhất sẽ khắc phục các vấn đề
OutOfMemory
trong quá trình biên dịch. b/62473121 - Bạn hiện có thể chú thích phương thức
Query
bằng@Transaction
. Hãy xem tài liệu tham khảo trên@Transaction
để biết thông tin chi tiết. b/65112315 - Lớp
StringUtil
trong Room sẽ bị xoá khỏi API công khai (chưa bao giờ được dùng như một API công khai).
- Hiện tại, Room phụ thuộc vào cấu phần phần mềm mới nhất sẽ khắc phục các vấn đề
Lifecycles:
LiveData
hoạt động đúng cách khi Hoạt động được đề cập một phần trên API < 24. b/65665621Các phương thức
OnLifecycleEvent
trong lớp mẹ hiện đã được gọi đúng cách hoặc cảnh báo sẽ được in trong quá trình biên dịch nếu không thể thực hiện được. b/63474615Lifecycle (Vòng đời) hiện giữ lại
WeakReference
ở LifecycleOwner để tránh làm rò rỉ LifecycleOwner nếu Lifecycle được lưu giữ trong bộ nhớ lâu hơn so với bình thường (đây chỉ là một biện pháp phòng ngừa, bạn vẫn nên cẩn thận để không rò rỉLifecycle
).
Ngày 9 tháng 10 năm 2017
Phát hành Paging alpha-3
; điều này làm cho ứng dụng tương thích với bản phát hành beta 2
của Lifecycle và Room.
Sửa lỗi
- Tài liệu cải tiến về Paging.
Ngày 5 tháng 10 năm 2017
Tất cả các cấu phần phần mềm chính (ngoại trừ Paging) hiện là beta 2
.
Không có phiên bản Paging mới trong bản phát hành này.
Sửa lỗi
Lifecycles:
LiveDataReactiveStreams
hiện huỷ đăng ký nhà xuất bản nguồn một cách thích hợp khiLiveData
không hoạt động. b/62609183- Các sự kiện trong vòng đời được phân phối đúng cách đến các lớp gốc khi lớp gốc là của một mô-đun khác. b/63474615
- LiveData xử lý đúng cách trình quan sát khi chúng huỷ đăng ký trong quá trình tạo đăng ký. b/66337741
FullLifecycleObserver
cho cấu phần phần mềm Language Java 8 hiện đã có trong cây phụ thuộc. b/66525578Đối với Proguard, vui lòng thêm các dòng sau vào tệp Proguard. (Điều này sẽ không cần thiết khi cung cấp 1.0.0)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
Room:
- Bây giờ, Room sẽ in một lỗi tại thời điểm biên dịch khi Pojo được trả về trong phương thức
@Query
có trường@NonNull
không khớp với bất kỳ cột nào trong phản hồi truy vấn. Nếu trường là@Nullable
, Room sẽ chỉ in cảnh báo. b/67115337 - Room hiện xác thực các chỉ mục trong phiên bản hệ điều hành mới hơn. b/63132683
- Theo mặc định, Room sẽ chọn hàm khởi tạo không có đối số nếu có nhiều hàm khởi tạo phù hợp trong một Pojo. b/67353427
- Khoá chính của cột có thể là
Nullable
nếu làInteger
hoặcLong
. b/67086876 - Trình theo dõi hết hiệu lực xử lý đúng cách nhập lại ở chế độ thử nghiệm. b/65471397
- Giờ đây, Room sẽ kiểm tra các ký tự không hợp lệ trong tên cột và tên bảng
tại thời điểm biên dịch (các ký tự không hợp lệ:
`
,"
). b/64749111
- Bây giờ, Room sẽ in một lỗi tại thời điểm biên dịch khi Pojo được trả về trong phương thức
Ngày 21 tháng 9 năm 2017
Với bản phát hành này, tất cả mô-đun Thành phần kiến trúc đạt đến ít nhất beta 1
(ngoại trừ Thư viện Paging mới là alpha 2
).
Chúng tôi không có kế hoạch thay đổi API nữa. Những thay đổi ngoài kế hoạch có thể xảy ra, nhưng
ngưỡng cho việc thay đổi API trước khi 1.0.0
ổn định rất cao và có thể sẽ không xảy ra.
- LifecycleActivity & LifecycleFragment sẽ bị xoá trước khi
1.0.0
ổn định. Các thành phần này không cần thiết khi sử dụng Thư viện hỗ trợ26.1.0
trở lên.
Không giống như giai đoạn alpha, giai đoạn beta được lên lịch với thời lượng rất ngắn.
Các lần thay đổi phiên bản
- Tiện ích Lifecycle và Room hiện là
beta 1
- Paging hiện là
alpha 2
- Không có thay đổi nào trong Lifecycle (thời gian chạy, phổ biến) và Arch Core (phổ biến). Cả hai cấu phần phần mềm này
đều là phiên bản
1.0.0
kể từ ngày 13 tháng 9.
Cấu phần phần mềm mới
Các vòng đời hiện có một cấu phần phần mềm mới tên là
common-java8
. Cấu phần phần mềm này chứa một giao diện mới có tên là DefaultLifecycleObserver; có cách triển khai mặc định cho tất cả phương thức Lifecycle. Nếu đang sử dụng ngôn ngữ Java 8, bạn nên sử dụng cấu phần phần mềm này thay vì chú thích.- Do có lỗi trong
beta1
, nên bạn cần thêm phần phụ thuộc rõ ràng vào mô-đunandroid.arch.lifecycle:common:1.0.1
để sử dụng cấu phần phần mềmcommon-java8
mới. Vấn đề này sẽ được khắc phục saubeta2
.
- Do có lỗi trong
Thay đổi về cách đóng gói
- Di chuyển
android.arch.persistence.room.db
sangandroid.arch.persistence.db
- Di chuyển
android.arch.persistence.room.db-impl
và đổi tên thànhandroid.arch.persistence.db-framework
Cả hai cấu phần phần mềm này đều đã là phần phụ thuộc trên Room, do đó, bạn không cần phải thay đổi bất kỳ nội dung gì trong tệp bản dựng nếu không trực tiếp sử dụng các phần tử đó.
Thay đổi về API
Room:
- Chú thích @ColumnInfo hiện hỗ trợ thao tác đối chiếu trên cột. b/62007004
- Theo mặc định, các trường
transient
sẽ bị bỏ qua trừ phi có các chú thích@ColumnInfo
,@Embedded
hoặc@Relation
. b/62600692 - Khoá chính phải được chú thích bằng
@NonNull
trừ phi các khoá đó được tạo tự động. b/64292391- Thay đổi này có thể yêu cầu di chuyển giản đồ. Chúng tôi rất tiếc vì sự bất tiện này.
- Thêm chú thích tiện lợi mới (@Transaction)
sẽ ghi đè phương thức
DAO
và chạy phương thức này bên trong một giao dịch.
Hỗ trợ Cơ sở dữ liệu SQLite:
- Thay đổi về API trong cấu hình cơ sở dữ liệu. b/65349673 b/65499876
Paging:
- Cải thiện tài liệu Paging có nhiều ví dụ hơn và chú thích về chuỗi.
Sửa lỗi
- Room:
- Chuỗi nhiều dòng Kotlin trong các phương thức
@Query
được xử lý đúng cách. b/65809374
- Chuỗi nhiều dòng Kotlin trong các phương thức
- Paging:
- Cấu phần phần mềm Paging không phụ thuộc vào thành phần nữa. b/65690261
1.0.0 Alpha 9-1 – Ngày 13 tháng 9 năm 2017
Đây là một bản phát hành chính trong đó các cấu phần phần mềm lifecyclecốt lõi (thời gian chạy, phổ biến) và arch core (phổ biến)
tiếp cận phiên bản ổn định 1.0.0
.
Cùng với thay đổi này, Thư viện hỗ trợ 26.1.0 hiện phụ thuộc vào các thư viện này. Cả AppCompatActivity và Mảnh hỗ trợ hiện triển khai giao diện LifecycleOwner.
Bản phát hành này cũng phụ thuộc vào việc sử dụng Thư viện hỗ trợ 26.1.0
để tận dụng chức năng tích hợp mới.
Thư viện mới: Paging
Bản phát hành này cũng bao gồm một thư viện mới có tên Paging, cho phép bạn dễ dàng tải các tập dữ liệu lớn
vào một RecyclerView theo từng phần khi cần thiết. Paging được phát hành dưới dạng alpha1
và sẽ có chu kỳ phát hành riêng.
Thay đổi về API
- Các lớp sau không được dùng nữa và sẽ bị xoá trong bản phát hành trong tương lai:
Sửa lỗi
Các lớp đã tạo nay được chú thích bằng
@Generated
nếu ứng dụng có chú thích đó trong đường dẫn lớp. b/35754819Khắc phục lỗi so sánh người quan sát của MediatorLiveData. b/64413274
Các truy vấn SQLite
WITH
hiện được hỗ trợ với [LiveData]. [ref-LiveData] b/62510164Khắc phục lỗi trong đó InvalidationTracker không gửi đúng danh sách nếu quan sát thấy nhiều bảng. b/65099281
Khắc phục lỗi trong đó Room sẽ tạo các tệp khác trên Windows. b/64470691
LifecycleObservers trong gói gốc hiện được hỗ trợ. b/62310817
1.0.0 Alpha 9 – Ngày 16 tháng 8 năm 2017
Sửa lỗi
- Sửa một lỗi trong LiveData, Trình quan sát thứ hai đã bị bỏ qua khi bạn xoá lỗi đầu tiên khỏi phương thức
onChanged
. b/64285805
1.0.0 Alpha 8 – Ngày 1 tháng 8 năm 2017
Thay đổi về hành vi
- Thêm phạm vi
NOT NULL
cho các cột có loại gốc hoặc những cột có chú thích NonNull. Việc này sẽ thay đổi cấu trúc của các bảng, vì vậy, nếu đã sử dụng Thành phần kiến trúc alpha 7 trở về trước, thì bạn cần triển khai di chuyển nếu muốn giữ lại dữ liệu hoặc sử dụngfallbackToDestructiveMigration()
trong trình tạo. b/62007004
Thay đổi về API
- SupportSQLiteProgram hiện đã mở rộng tính năng AutoCloseable. b/63131997
1.0.0 Alpha 7 – Ngày 26 tháng 7 năm 2017
Sửa lỗi
Khắc phục lỗi nghiêm trọng trong phương thức LifecycleRegistry
removeObserver
, làm hỏng việc thêm lại LifecycleObserver.Sửa InvalidationTracker cho cơ sở dữ liệu tuỳ chỉnh b/63162311
1.0.0 Alpha 6 – Ngày 25 tháng 7 năm 2017
Thay đổi về hành vi
Thứ tự thực hiện các lệnh gọi của LifecycleObserver đã thay đổi. Các trình quan sát trước đây luôn được gọi theo thứ tự thêm vào: nếu bạn thêm
observer1
trướcobserver2
, thì người dùng đó sẽ nhận đượcON_CREATE
và tất cả sự kiện khác trướcobserver2
. Điều này không còn đúng cho các sự kiện phá huỷ, vì các trình quan sát được gọi theo thứ tự cộng lại. Do đó, hành vi hiện tại là: nếuobserver1
được thêm vào trướcobserver2
, sau đóON_CREATE
được gửi trước đếnobserver1
, sau đó đếnobserver2
(điều này xảy ra vớiON_START
vàON_RESUME
), nhưng sự kiệnON_PAUSE
được gửi trước đếnobserver2
và sau đó chỉ đếnobserver1
(tương tự vớiON_STOP
vàON_DESTROY
).Room cho ra trường hợp ngoại lệ nếu quá trình di chuyển bị thiếu. Trước đây, Room chỉ xoá cơ sở dữ liệu, nhưng giờ lại gặp sự cố. Nhà phát triển có thể chọn cho phép thực hiện hành vi xoá bằng cách gọi API trình tạo. b/63872392
Thay đổi về API
Thêm phương thức
fallbackToDestructiveMigration()
vàoRoomDatabase.Builder
để xoá cơ sở dữ liệu nếu thiếu cơ sở dữ liệu di chuyển. b/63872392Thành phần kiến trúc hiện phụ thuộc vào thư viện hỗ trợ 26.0.0
Sửa lỗi
Khắc phục việc xử lý @Relation được lồng vào @Embedded. b/63736065
Di chuyển thử nghiệm cố định cho các bảng có khoá chính được tăng tốc tự động. b/63393618
Bây giờ, @Queries chạy truy vấn DELETE hoặc UPDATE sẽ nhận được đối số một cách chính xác. b/63872538
Bây giờ, ViewModels được giữ lại khi mảnh chủ sở hữu nằm trong ngăn xếp lui và sự thay đổi cấu hình xảy ra hai lần. b/38445801
1.0.0 Alpha 5 – Ngày 18 tháng 7 năm 2017
Thay đổi về API
Thêm phương thức gọi lại mới vào
RoomDatabase.Builder
để quan sát thời điểm cơ sở dữ liệu được tạo hoặc mở. b/62699324@Query hiện có thể trả về RxJava
Maybe
hoặcSingle
. b/62231019
Bạn cần dựa vào cấu phần phần mềm android.arch.persistence.room:rxjava2
để thêm dịch vụ hỗ trợ RxJava vào Room.
Sửa lỗi
Sửa các truy vấn
@Delete
không có tham số nào. b/63608092Loại Room cố định sẽ kiểm tra phương thức getter và setter. b/63733651
1.0.0 Alpha 4 – Ngày 11 tháng 7 năm 2017
Thay đổi về API
Thêm một phương thức tiện lợi mới (
runInTransaction()
) vào RoomDatabase.Phương thức
@Insert
,@Delete
và@Update
hiện có thể có tham số từ nhiều loại thực thể. b/62682405
Sửa lỗi
Khắc phục quá trình xử lý
byte[]
trong@Dao
. b/62460045Chức năng Kiểm tra di chuyển trong Room hiện sử dụng phép so sánh không phân biệt chữ hoa chữ thường. b/62875382
Đã sửa cấu hình Proguard cho cấu phần phần mềm Lifecycle. b/62113696
1.0.0 Alpha 3 – Ngày 15 tháng 6 năm 2017
Thay đổi về API
Hiện tại,
@OnLifecycleEvent
chỉ hỗ trợ 1 tham số sự kiện. Đây là một thay đổi để chuẩn bị cho việc hỗ trợ Java 8 để chúng tôi có thể di chuyển sang các giao diện với các phương thức mặc định trong tương lai. Liên quan đến thay đổi này, chỉ các phương thức được chú thích trong@OnLifecycleEvent(ON_ANY)
mới có thể nhận được tham số thứ hai thuộc loạiEvent
(tham số đầu tiên làLifecycleOwner
). Hãy xem tài liệu về Lifecycle để biết thông tin chi tiết.Các lớp
LifecycleActivity
vàLifecycleFragment
sẽ được di chuyển vào cấu phần phần mềmandroid.arch.lifecycle:extensions
.MigrationTestHelper nhận được Instrumentation thay vì
Context
để có thể đọc giản đồ từ nội dung thử nghiệm và tạo cơ sở dữ liệu trong ngữ cảnh ứng dụng.@Insert
,@Delete
và@Update
chú thích trong@DAO
hiện có thể cóIterable
làm loại tham số. b/62259820
Sửa lỗi
Các phương thức bị ghi đè có sự kiện trong vòng đời không được gọi nhiều lần nữa.
Nhiều tham số
IN
hiện đã được xử lý đúng cách. b/62608681Các lớp DAO trừu tượng hiện có thể có hàm khởi tạo nhận thực thể
@Database
. b/38488747DAO
hiện có thể có siêu lớp/giao diện với các tham số loại. b/62103620
1.0.0 Alpha 2 – Ngày 2 tháng 6 năm 2017
Thay đổi về API
Lệnh gọi lại InvalidationTracker hiện nhận được danh sách các tên bảng đã thay đổi. (b/38468740)
Giảm giao diện API của lớp SupportSQLiteDatabase. (b/38481640)
Sửa lỗi
- Các tệp Proguard cho vòng đời. (b/62113696)
- Mất dữ liệu với Bộ chuyển đổi loại. (b/62100716)
- Cho phép trả về
Long[]
trong truy vấn@Insert
.
1.0.0 Alpha 1 – Ngày 17 tháng 5 năm 2017
MinSDK: 14
Khuyến cáo chung
Mặc dù chúng tôi đã thử nghiệm rất nhiều trước khi ra mắt, nhưng Thành phần kiến trúc hiện đang ở giai đoạn alpha. Nếu bạn đang tạo ứng dụng phát hành chính thức, hãy lưu ý rằng API sẽ thay đổi trước bản phát hành 1.0 và có thể chưa hoàn toàn đủ mạnh. Nếu không muốn gỡ lỗi trong thư viện mà bạn sử dụng, bạn nên thử Thành phần kiến trúc trong các dự án phụ.
Mọi người không nên di chuyển ngay hôm nay. Chúng tôi sẽ có hướng dẫn di chuyển sẵn sàng cho bản phát hành 1.0 của các thành phần kiến trúc.
Các hạn chế và vấn đề đã biết
- Lifecycle
Fragment
vàActivityCompat
trong Thư viện hỗ trợ chưa triển khai giao diệnLifecycleOwner
. Chúng sẽ hiển thị khi Thành phần kiến trúc đạt đến phiên bản 1.0.0.