Bản lưu trữ ghi chú phát hành về thành phần cấu trúc (Architecture Components)

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 biên mà công việc (work) định kỳ có thể chạy nhiều lần trên 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 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 Giới hạn (Constraint) trên các thiết bị chạy Android 5.1 (API cấp 22) trở xuống. b/122578012
  • Xử lý công việc hoàn thành nhanh hơn trong một số trường hợp hạn chế. b/122358129
  • Thêm một thay đổi để giải quyết các tình huống tương tranh 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ộc 1.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

  • Phần tử con từng huỷ thành công trước đây của công việc mẹ 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

Phát hành Navigation 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 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 cuộc 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

  • MenuItemmenuCategory="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ức NavigationUI. b/120104424
  • AppBarConfiguration nay cho phép bạn đặt một thực thể OnNavigateUpListener dự phòng sẽ được gọi khi navController.navigateUp() trả về false. b/79993862 b/120690961

Thay đổi có thể gây lỗi

  • Khi bạn sử dụng <argument> với argType="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ức setup. Thêm menuCategory="secondary" vào MenuItem của bạn để tránh làm bật ra ngăn xếp lui. aosp/852869
  • Phương thức fromBundle() của các lớp Args được tạo hiện giờ sẽ lấy Bundle 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ờ, thanh điều hướng 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.

Thay đổi về API

  • Chuyển androidx.work.Result làm một lớp (class) bên trong của ListenableWorker. Điều này giúp ngăn chặn việc tái cấu trúc xung đột với lớp Result 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ủa ListenableWorker.

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.

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 (destination), khi được sử dụng với các phương thức NavigationUI, giờ đây sẽ tự động thay thế các thực thể {argName} trong android:label của bạn 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ành OnDestinationChangedListener b/118670572
  • OnDestinationChangedListener hiện cũng truyền đối số Bundle aosp/837142
  • Các thuộc tính app:clearTaskapp: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ụng app:popUpTo với thư mục gốc của biểu đồ để xoá tất cả đích đến khỏi ngăn xếp sau. b/119628354
  • ActivityNavigator.Extras hiện sử dụng mẫu Builder và thêm khả năng đặt bất kỳ cờ Intent.FLAG_ACTIVITY_ nào aosp/828140
  • NavController.onHandleDeepLink đổi tên thành handleDeepLink 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, NavDeepLinkBuilderAppBarConfiguration, đã được tạo final 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 cho FragmentFactory dễ dàng hơn. b/119054429
  • Hàm khởi tạo cho NavGraphNavigator không còn lấy Context aosp/835340
  • NavigatorProvider hiện là một lớp, chứ không phải là một giao diện. NavigatorProvider do getNavigatorProvider() trả về không thay đổi chức năng của chế độ này. aosp/830660
  • NavDestination.navigate() đã bị xoá. Gọi navigate() trên Navigator. 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ầu navigate trả về NavDestination trong đó.
  • Các thực thể Navigator không gửi được các sự kiện bật lên cho NavController nữa. Hãy cân nhắc sử dụng OnBackPressedCallback để chặn hoạt động nhấn nút quay lại và gọi navController.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 đến hiện sẽ điền các đối số từ đối số không phải Chuỗi bằng cách gọi toString() b/120161365

Safe Args

  • Args an toàn 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.

Thay đổi về API

  • Cấu phần phần mềm mới work-rxjava2, giới thiệu RxWorker. Đâ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 thành Result. 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 qua Result.success() (hoặc Result.success(Data)), Result.failure() (hoặc Result.failure(Data)) và Result.retry(). ListenableFuture của bạn hiện nhận được Result thay vì Payload. Worker không có các phương thức getter và setter cho đầu ra Data. Đây là một thay đổi có thể gây lỗi.
  • Thêm Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)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 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 tiện ích Kotlin Operation.await()ListenableFuture.await().
  • Operation.getException() đổi tên thành Operation.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 varargs còn lại trong WorkManager, WorkContinuationOneTimeWorkRequest để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói varargs hiện có của mình bằng Arrays.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, *). Chúng thể hiện một API khó hiểu; các phương thức combine hiện có 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 qua observeForever đượ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.
  • Work khác biệt đã dừng so với đã huỷ; getWorkInfoById() sẽ trả lại một WorkInfo cho CANCELLED State trong ListenableWorker.onStopped().
  • Coi null Result là lỗi trong ListenableWorker. 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ào Result. 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 qua Result.success() (hoặc Result.success(Data)), Result.failure() (hoặc Result.failure(Data)) và Result.retry(). ListenableFuture của bạn hiện nhận được Result thay vì Payload. Worker không có các phương thức getter và setter cho đầu ra Data.
  • Thêm các phương thức tiện ích Kotlin Operation.await()ListenableFuture.await().
  • Đổi tên Operation.getException() thành Operation.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 var buộc còn lại trong WorkManager, WorkContinuationOneTimeWorkRequest để tinh giản API. Để khắc phục sự cố xây dựng, bạn có thể gói varargs hiện có của mình bằng Arrays.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ức combine 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

  • Giờ đây, FTS tokenizer trong @Fts3/@Fts4 sẽ lấy một Chuỗi (String) thay vì một Enum. Việc này cho phép Room sử dụng các bộ mã hoá tuỳ chỉnh. Các bộ mã hoá được tích hợp sẵn vẫn được định nghĩa trong FtsOptions dưới dạng hằng số chuỗi. b/119234881

Tính năng mới

  • Quy trình: Giờ đây, các phương thức DAO có thể là tạm ngưng các chức nă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ú thích bằng @Insert, @Delete hoặc @Update hiện hỗ trợ ListenableFuture dưới dạng loại trả về. b/119418331

Sửa lỗi

  • Khắc phục lỗi trong đó Room sẽ 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 trong đó 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 bộ 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 trong đó Room sẽ từ chối nhiều cách triển khai Collection khác làm đối số của biểu thức IN. b/119884035
  • Khắc phục lỗi khiến LiveData được trả lại 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.

Thay đổi về API

  • work-runtime-ktx ra mắt một CoroutineWorker mới.
  • WorkStatus đổi tên thành WorkInfo Tất cả biến thể của phương thức getStatus tương ứng đã được đổi tên thành các biến thể của getWorkInfo 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 đối số boolean cho biết liệu WorkRequest 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ói androidx.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()WorkerParameters.getTriggeredContentAuthorities() đã trả về các mảng trước đó. Bây giờ, những phương thức này trả về Collections. Đây là một thay đổi có thể gây lỗi.
  • ListenableWorker.onStartWork() đổi tên thành ListenableWorker.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()Configuration.getMinJobSchedulerID() lần lượt được đổi tên thành Configuration.getMinJobSchedulerId()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 công thái học của API.
  • Thêm API WorkManager.enqueueUniqueWork() để thêm các OneTimeWorkRequest duy nhất vào hàng đợi mà không phải tạo WorkContinuation.
  • Tất cả biến thể của các phương thức enqueuecancel trên WorkManager hiện sẽ trả về loại Operation 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 varargs cho WorkRequest 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ụng Arrays.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.
  • 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ột IllegalStateException. Đâ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ềm work-runtime-ktx hiện sử dụng ListenableWorker. 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á I/O ổ đĩa có thể có khi sử dụng WorkManager khi 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ành WorkInfo Tất cả biến thể của phương thức getStatus tương ứng đã được đổi tên thành các biến thể của getWorkInfo tương ứng.
  • ListenableWorker.onStopped() không còn chấp nhận đối số boolean cho biết liệu WorkRequest 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ói androidx.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()WorkerParameters.getTriggeredContentAuthorities() đã trả về các mảng trước đó. Bây giờ, những phương thức này trả về Collections.
  • ListenableWorker.onStartWork() đổi tên thành ListenableWorker.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()Configuration.getMinJobSchedulerID() lần lượt được đổi tên thành Configuration.getMinJobSchedulerId()Configuration.getMaxJobSchedulerId().
  • Tất cả biến thể của các phương thức enqueuecancel trên WorkManager hiện sẽ trả về loại Operation mới.
  • Tất cả biến thể của enqueue không còn chấp nhận varargs cho WorkRequest 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ột IllegalStateException.

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

  • Sửa một lỗi mà trong đó Room sẽ thực hiện I/O trong chuỗi chính khi đăng ký và vứt bỏ khỏi một loại trả lại Rx. b/117201279
  • Khắc phục lỗi trong đó Room không tìm thấy trình chuyển đổi loại phù hợp cho một trường trong lớp thực thể Kotlin. b/111404868
  • Khắc phục lỗi trong đó Room sẽ 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 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 đến đượ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ành navigation-testing artifact và sẽ không xuất bản nữa.
  • Cấu phần 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 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 nay có thể tạo Directions 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ế cho PagedList.Config.Builder
  • Thêm androidx.paging.PagedList() làm lựa chọn Kotlin thay thế cho PagedList.Builder
  • Thêm DataSourceFactory.toLiveData() làm lựa chọn Kotlin thay thế cho LivePagedListBuilder
  • Thêm DataSourceFactory.toObservable()toFlowable() làm lựa chọn Kotlin thay thế cho RxPagedListBuilder
  • 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, không còn dùng biến thể trước đó.
  • Thêm PagedListAdapter/AsyncPagedListDiffer.submitList() biến thể có chức năng gọi lại kích hoạt nếu/khi pagedlist được hiển thị, sau khi di chuyển. Đ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 ra IndexOutOfBoundsException 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.

Thay đổi về API

  • Xoá tất cả phương thức và lớp deprecated trước đây, đặc biệt là hàm khởi tạo Worker mặc định. Đây là một thay đổi lớn trong API.
  • Đổi tên NonBlockingWorker thành ListenableWorker, hiện là một lớp công khai đã ẩ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ật ListenableFuture cho phù hợp. Các cách triển khai tham chiếu của ListenableFuture được cung cấp trong gói Futuresalpha02 (xem bên dưới phần WorkManager).
    • Worker mở rộng ListenableWorker và vẫn hoạt động như trước đây, bằng phương thức Result doWork() trừu tượng.
    • Phát ngẫu nhiên một số phương pháp và thành viên từ Worker đến ListenableWorker.
    • 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 rằng 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ản WorkerFactory 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êm ListenableFuture<Void> làm loại trả về trong nhiều phương thức trong API. Đây là một thay đổi về API có thể gây lỗi.
    • Giờ đây, bạn có thể đồng bộ hoá và quan sát bằng cách sử dụng ListenableFuture. Ví dụ: WorkManager.enqueue() dùng để trả về void; mã này hiện trả về ListenableFuture<Void>. Bạn có thể gọi ListenableFuture.addListener(Runnable, Executor) hoặc ListenableFuture.get() để chạy mã khi hoạt động này hoàn tất.
    • Xin lưu ý rằng 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 cancel() cuộc gọi trên các đối tượng này vì các đối tượng này gây nhầm lẫn và khó giải thích (bạn đang huỷ thao tác hay công việc được thực hiện?). Điều này nằm trong hợp đồng Future.
    • Để duy trì sự đồng nhất với tính năng đồng bộ hoá getStatus* mà chúng tôi đã cung cấp biến thể ListenableFuture và đổi tên các biến thể hiện có trả lại LiveData một cách rõ ràng rằng "LiveData" là một phần của tên (ví dụ:getStatusesByIdLiveData(UUID)). Đây là một thay đổi API có thể gây lỗi.

Sửa lỗi

  • Khắc phục vấn đề đã biết trên alpha09 liên quan đến các tệp androidx-annotations.pro trùng lặp. Bạn có thể xoá giải pháp 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.
  • Thêm 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/116253486b/116677275
  • WorkContinuation.combine() hiện chấp nhận một hoặc nhiều WorkContinuation thay vì hai hoặc nhiều. b/117266752

Thay đổi về API có thể gây lỗi

  • Xoá tất cả phương thức và lớp deprecated trước đây, đặc biệt là hàm khởi tạo Worker 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()WorkContinuation.synchronous().
  • Các phương thức WorkManager.getStatus*() nay trả về ListenableFuture. WorkManager.getStatus*LiveData() trả về các LiveData.

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 ResolvableFutureAbstractResolvableFuture làm ListenableFuturecá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. Giờ đây, các lớp được chú thích bằng @Entity hiện 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 có sẵn thông qua các phương thức của chú thích. b/62356416
  • Chế độ xem: Room hiện hỗ trợ việc khai báo một lớp là một truy vấn đã lưu trữ, còn được gọi là một chế độ xem bằng chú thích @InfrastructureView. b/67033276
  • Giá trị tự động: Room hiện hỗ trợ khai báo các lớp có chú thích AutoValue dưới dạng các thực thể và POJO. Giờ đây, bạn có thể khai báo các chú thích trong Room @PrimaryKey, @ColumnInfo, @Embedded@Relation 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ú thích này cũng phải đi kèm với @CopyAnnotations cho Room để hiểu đúng các chú thích. b/62408420
  • Hỗ trợ loại trả về Rx bổ sung: Phương thức DAO được chú thích bằng @Insert, @Delete hoặc @Update hiện hỗ trợ các loại trả về Rx Completable, Single<T>Maybe<T>. b/63317956
  • Các loại không thể thay đổi với @Relation: Room trước đây bắt buộc phải có @Relation trường chú thích có thể đặt được nhưng giờ đây chúng có thể là tham số hàm khởi tạo.
  • enableMultiInstanceInvalidation: Là một API mới trong RoomDatabase.Builder để cho phép vô hiệu hoá nhiều phiên bản 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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: Là một API mới trong RoomDatabase.Builder để tự động tạo lại cơ sở dữ liệu nếu quá trình hạ cấp diễn ra. b/110416954
  • ignoredColumns: 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

  • mCallbackmDatabase trong RoomDatabase hiện giờ là @Deprecated và sẽ bị xoá trong phiên bản mới của Room chính. b/76109329

Sửa lỗi

  • Khắc phục hai vấn đề trong đó 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 quá trình khởi chạy. b/111504749b/111519144
  • Bây giờ, 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 mà 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 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

Thay đổi về API

  • Thay đổi có thể gây lỗi: Phương thức navigate() của Navigator ngay bây giờ 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ỉ lượt xem nếu sử dụng cùng với lượt xem 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 hiện đã mở rộng lớp Navigation của phần tử mẹ nếu lớp này 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: "Đã 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 sau vào tệp gradle như một giải pháp tạm thời trong khi chúng tôi khắc phục lỗi vấn đề 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 cho lỗi "100 công việc". b/115560696
  • Bổ sung một số bản sửa lỗi cho các lỗi ràng buộc về khoá nước ngoài do tình huống tương tranh. b/114705286
  • Uỷ quyền ConstraintTrackingWorker.onStopped(boolean) cuộc gọi tới Worker ban đầu. 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 thiện việc tạo chuỗi đảm bảo 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ộ.

Thay đổi về API

  • Giờ đây, bạ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ỉ định WorkerFactory trong WorkManager.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 WorkerNonBlockingWorker 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ọi super(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.
  • 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ủa NonBlockingWorker.
  • Thêm khả năng kích hoạt công việc được tính giờ trong TestDriver thông qua TestDriver.setInitialDelayMet(UUID)TestDriver.setPeriodDelayMet(UUID). b/113360060

Thay đổi có thể gây lỗi

  • Hàm khởi tạo WorkerNonBlockingWorker mặc định không được dùng nữa. 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
  • Khắc phục sự cố trong đó công việc thử lại không chạy. b/112604021
  • Không khắc phục được công việc định kỳ nhiều lần (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à 10KB.
  • 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 mà có thể trả về số lượng kết quả không liên kết.
  • Công việc đã hoàn tất quá trình thực hiện hiện huỷ chính xác tất cả thực thể đang chờ xử lý của công việc đó trong 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
  • Fixed a ConcurrentModificationException in ConstraintTracker. B.
  • Thay đổi chú thích loại dữ liệu trả về của Data.getBooleanArray(String)Data.getIntArray(String) thành @Nullable thay vì @NonNull. b/112275229

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 đủ cho các giải pháp tạo chuỗi tuỳ chỉnh.
  • Thay đổi chú thích loại dữ liệu trả về của Data.getBooleanArray(String)Data.getIntArray(String) thành @Nullable thay vì @NonNull. b/112275229
  • Tiện ích Kotlin: ngừng sử dụng Map.toWorkData() và thêm workDataOf(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 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 Args. 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ề giá trị 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 khoá cơ sở dữ liệu khi lên lịch công việc. b/111801342
  • Khắc phục 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 hạn chế khiến WorkManager gặp sự cố. googleclassrooms/android-workmanager/issues/56
  • Tạo WorkRequest duy nhất khi sử dụng WorkRequest.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ột IllegalStateException. Đâ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), tính năng 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ạo Constraints, Data.toByteArray()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 PeriodicWorkRequest khi sử dụng JobScheduler. b/110798652
  • Khắc phục vấn đề PeriodicWorkRequest không thực thi chính xác sau khi nghỉ trên thiết bị. b/111469837
  • Khắc phục vấn đề về độ trễ ban đầu khi sử dụng JobDispatcher của Firebase. b/111141023
  • Khắc phục một số vấn đề có thể xảy ra liên quan đến tình huống tương tranh và thời gian.
  • Giải phóng đúng BroadcastReceiver không còn cần thiết.
  • Tối ưu hoá hiệu quả lập lịch 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 yêu cầu WorkRequest đã cho. 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ị này mặc định 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ạo Constraints, Data.toByteArray()Data.fromByteArray(byte[]).

Ngày 19 tháng 7 năm 2018

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 sự 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 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 lạc đà trong tên phương thức NavDirections tương ứng
    • Ví dụ: DemoController.index sẽ trở thành setDemoControllerIndex b/79995048
    • Ví dụ: action_show_settings sẽ trở thành actionShowSettings b/79642240
  • 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()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 sự cố khi di chuyển trong phương thức trong vòng đời của mảnh b/109916080
  • Khắc phục sự cố nhiều lần khi di chuyển qua các biểu đồ lồng nhau b/110178671
  • Khắc phục sự cố khi sử dụng setPopUpTo với đích đến đầ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
  • Hỗ trợ thêm 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 (trình giữ chỗ bị tắt, LocationalDataSource) b/80149146
  • (Đã được phát hành trong 1.0.1) Khắc phục các sự cố xảy ra khi PagedListAdapterAsyncPagedListDiffer 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 PagedListAdapterAsyncPagedListDiffer 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ên AlarmManager.

  • Khắc phục lỗi ANR có thể xảy ra khi lên lịch lại cho tất cả nhân viên sau khi buộc dừng hoặc khởi động lại. b/110507716

  • Thêm chú thích là 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 thi Worker. 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 tình huống tương tranh trong quá trình 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 yêu cầu 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ản 1.1.1-rc1.

Thay đổi về API

  • Thêm getStatusesSync(), phiên bản đồng bộ hoá của WorkContinuation.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ỷ một cách rõ ràng. b/79632247

  • Thê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ể thực thi số lượng lệnh có thể gửi đến JobScheduler hoặc AlarmManager. Điều này giúp ngăn WorkManager thu thập tất cả vùng JobScheduler còn trống.

  • Thêm Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId) giúp xác định một loạt JobScheduler mã việc làm an toàn cho WorkManager để sử dụng. b/79996760

  • Worker.getRunAttemptCount() trả về số lần chạy hiện tại cho một Worker nhất định. b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) cho phép bạn thêm một PeriodicWorkRequest duy nhất vào hàng đợi. b/79600647

  • WorkManager.cancelAllWork() sẽ huỷ tất cả Worker. Các thư viện phụ thuộc vào WorkManager 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ụng WorkManager.getLastCancelAllTimeMillis() để xoá thêm trạng thái nội bộ.

  • Thêm WorkManager.pruneWork() để xoá các việc làm đã hoàn thành khỏi cơ sở dữ liệu nội bộ. b/79950952, b/109710758

Thay đổi về hành vi

  • Thêm một thẻ ngầm cho tất cả WorkRequest, là tên lớp đủ điều kiện cho Worker. Điều này cho phép khả năng xoá WorkRequest mà không có tag hoặc khi không có id. b/109572351

Thay đổi có thể gây lỗi

  • Worker.WorkerResult đổi tên thành Worker.Result.

  • Worker.onStopped hiện đã có một tham số bổ sung isCancelled được đặt thànhtrue khi Worker đã 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.

Thay đổi về hành vi

  • FragmentNavigator hiện đang sử dụng setReorderingAllowed(true). b/109826220

  • Navigation 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 mảnh. b/79632233

  • Hiệ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/79656847

  • Sửa lỗi StackOverflowError khi sử dụng NavDeepLinkBuilder. b/109653065

  • Sửa lỗi IllegalArgumentException khi quay lại biểu đồ lồng. b/80453447

  • Khắc phục sự cố các mảnh bị trùng lặp khi sử dụng launchSingleTop. b/79407969

  • Bâ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 trong NavOptions không còn được dùng nữa. b/80338878

  • Thuộc tính launchDocument cho các hành động và API liên kết trong NavOptions 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 NullPointerException trên State.isFinished(). b/79550068

  • Khắc phục sự cố khiến Worker được lên lịch lại vào Application.onCreate(). b/79660657

  • Khắc phục sự cố trong đó bạn có thể lên lịch công việc nhiều hơn mức hệ điều hành cho phép. b/79497378

  • Di chuyển dữ liệu về khoá chế độ thức được liên kết với Worker vào chuỗi trong nền.

  • Bây giờ, quá trình triển khai AlarmManager sẽ xoá đúng cách khi tất cả công việc đang chờ xử lý hoàn tất.

  • Khắc phục 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 chức năng hỗ trợ cho float trong Data. b/79443878

  • Data.Builder.putAll() hiện trả về một thực thể của Builder. b/79699162

  • Hiển thị thêm lỗi và bản sửa lỗi trong tài liệu. b/79691663

Thay đổi về API

  • Worker có thể phản ứng với việc bị chặn. Bạn có thể sử dụng Worker.isStopped() để kiểm tra xem Worker đã bị ngừng hay chưa. Có thể dùng Worker.onStopped() để thực hiện các thao tác dọn dẹp nhẹ.

  • API Worker.getTags() trả về một Set thẻ được liên kết với Worker.

  • Thêm quá tải javax.time.Duration cho API, kết hợp thời lượng và TimeUnit. Trình bảo vệ: @RequiresApi(26).

  • Chuyển WorkManager phần mở rộng từ gói androidx.work.ktx sang gói androix.work. Các tiện ích cũ sẽ không được dùng nữa và sẽ bị xoá trong phiên bản trong tương lai.

  • Configuration.withExecutor() không được dùng nữa. Hãy chuyển sang sử dụng Configuration.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.0Room 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 bản phát hành 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 khác.

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 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.

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 không lập kế hoạch thay đổi API cho Paging 1.0 và giới hạn số lượng 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 ObservableFlowable giây, mất Schedulers 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 phần mềm android.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ành setFetchExecutor() (trong PagedList.BuilderLivePagedListBuilder)

    • Đổi tên setMainThreadExecutor() thành setNotifyExecutor() (trong PagedList.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ải PagedList 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 khai DataSource.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 SingleMaybe 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 cho Single đã trả về hoặc Maybe lần đăng nhập. b/76031240

  • RoomDatabase.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ển String 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ính observedEntities miễn là Pojo tham chiếu đến một hoặc nhiều thực thể qua các trường Embedded hoặc Relation của thuộc tính đó. b/74041772

  • Paging: 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ượng DataSource.LoadCallback hiện đã mang tính trừu tượng. Thao tác này cho phép gói một DataSource hoặc kiểm tra trực tiếp một DataSource 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ả do DataSource 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ị xoá khỏi API, bao gồm cả phần còn lại của gói recyclerview.extensionsLivePagedListProvider.
  • 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, xem ở trên.
  • Khắc phục lỗi trong đó BoundaryCallback.onItemAtEndLoaded không được gọi cho PositionalDataSource 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 addObserverremoveObserver 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/63807999

  • SupportSQLiteQuery hiện có một phương thức getArgCount() 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/72600425

  • Hiệ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ện Dao là các lớp bên trong trong cùng một gói và có cùng tên. b/73536380

  • Cá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/73534868

  • Cá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/68118746

  • Cá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-alpha6com.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ành AsyncListDiffer
    • getItem(index)/getItemCount() đã bị xoá, thay vào đó là mẫu gọi getCurrentList().getItem(index)getCurrentList().size() rõ ràng hơn.
  • Cập nhật mọi tham chiếu của ListAdapterConfig thành AsyncDifferConfig
  • Cập nhật mọi tham chiếu của DiffCallback thành DiffUtil.IttemCallback
  • Cập nhật mọi tham chiếu của PagedListAdapterHelper thành AsyncPagedListDiffer
  • Cập nhật mọi tham chiếu của setList() thành submitList()
    • đổ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ức setJournalMode() trên RoomDatabase.Builder. b/67757002

  • Hỗ trợ Guava: Room hiện hỗ trợ trả về Guava Optional<T> hoặc ListenableFuture<T> trong DAO cụm từ tìm kiếm. Để sử dụng ListenableFuture<T>, bạn cần nhập guava 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ớp DAO. Điều này áp dụng cho cả Java 8Kotlin. 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/72884434

  • Tê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/72366965

  • Room 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/67181813

  • Sự 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 về API

  • LifecycleActivityLifecycleFragment không dùng nữa hiện đã bị xoá – vui lòng sử dụng FragmentActivity, AppCompatActivity hoặc hỗ trợ Fragment.
  • Thêm chú thích @NonNull vào ViewModelProvidersViewModelStores
  • Hàm khởi tạo ViewModelProviders đã ngừng hoạt động – 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ụng ViewModelProvider.AndroidViewModelFactory
  • Phương thức ViewModelProvider.AndroidViewModelFactory.getInstance(Application) tĩnh được thêm vào để truy xuất Factory tĩnh thích hợp cho việc tạo các phiên bản ViewModelAndroidViewModel.

Room 1.1.0-alpha1

Tính năng mới

  • RawQuery: API mới này cho phép @Dao phương thức nhận SQL dưới dạng tham số truy vấn b/62103290, b/71458963
  • fallBackToDestructiveMigrationsFrom: API mới này trong RoomDatabase.Builder cho phép kiểm soát chi tiết hơn từ việc bắt đầu di chuyển phá huỷ các phiên bản giản đồ schema (so với fallbackToDestructiveMigration)b/64989640
  • Room hiện chỉ hỗ trợ API Paging mới hơn (alpha-4+), giảm khả năng hỗ trợ phiên bản LivePagedListProvider không dùng nữa. Để sử dụng phiên bản alpha của Room mới, bạn cần phải sử dụng Paging alpha-4 trở lên và chuyển từ LivePagedListProvider sang LivePagedListBuilder nếu bạn chưa chuyển.

Sửa lỗi

  • Hỗ trợ nhiều hơn 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 IllegalArgumentExceptionb/70360195 (và dựa trên công cụ Sửa lỗi phía Room)
  • 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ành PositionalDataSource để 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ành ItemKeyedDataSource để làm rõ sự khác biệt.

  • LivePagedListBuilderDataSource.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ạo DataSource độc lập với LiveData.

  • 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ụng DataSource + 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()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

Ứ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 khi onSaveInstanceState được gọi (trước đây, tệp này chỉ được đánh dấu là CREATED mà không phải gửi ON_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).
  • Lifecycles:

    • LiveData hoạt động đúng cách khi Hoạt động được đề cập một phần trên API < 24. b/65665621

    • Cá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/63474615

    • Room hiện giữ WeakReference một vòng lặp cho LifecycleOwner để tránh làm rò rỉ LifecycleOwner nếu Lifecycle được lưu giữ trong bộ nhớ dài hơn 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 làm 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 khi LiveData 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ặc Long. 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

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ô-đun android.arch.lifecycle:common:1.0.1 để sử dụng cấu phần phần mềm common-java8 mới. Vấn đề này sẽ được khắc phục sau beta2.

Thay đổi về cách đóng gói

  • Di chuyển android.arch.persistence.room.db sang android.arch.persistence.db
  • Di chuyển android.arch.persistence.room.db-impl và đổi tên thành android.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:

  • 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
  • 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ả AppCompatActivityMả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

Sửa lỗi

  • Các lớp đã tạo hiện sẽ được thông báo bằng @Generated nếu ứng dụng có chú thích trong đường dẫn lớp. b/35754819

  • Khắ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/62510164

  • Khắ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

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ụng fallbackToDestructiveMigration() trong trình tạo. b/62007004

Thay đổi về API

1.0.0 Alpha 7 – Ngày 26 tháng 7 năm 2017

Sửa lỗi

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ước observer2, thì người dùng đó sẽ nhận được ON_CREATE và tất cả sự kiện khác trước observer2. Đ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ếu observer1 được thêm vào trước observer2, sau đó ON_CREATE được gửi trước đến observer1, sau đó đến observer2 (điều này xảy ra với ON_STARTON_RESUME), nhưng sự kiện ON_PAUSE được gửi trước đến observer2 và sau đó chỉ đến observer1 (tương tự với ON_STOPON_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ào RoomDatabase.Builder để xoá cơ sở dữ liệu nếu thiếu cơ sở dữ liệu di chuyển. b/63872392

  • Thà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

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/63608092

  • Loạ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@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/62460045

  • Chứ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ại Event (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 LifecycleActivityLifecycleFragment sẽ được di chuyển vào cấu phần phần mềm android.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@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/62608681

  • Cá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/38488747

  • DAO 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

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