15 มกราคม 2019
WorkManager
ปล่อย WorkManager 1.0.0-beta02 แล้ว รุ่นนี้มีการแก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่อง
- แก้ไขกรณี Edge Case ที่การทำงานเป็นระยะอาจทำงานมากกว่า 1 ครั้งในแต่ละช่วง สำหรับอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) b/121998363
- แก้ไข
ConcurrentModificationExceptionในอุปกรณ์ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/121345393 - แก้ไขการทำงานที่ผิดพลาดเมื่อไม่เป็นไปตามข้อจำกัดในอุปกรณ์ ที่ใช้ Android 5.1 (API ระดับ 22) หรือต่ำกว่า b/122578012
- เพิ่มประสิทธิภาพการจัดการการทำงานให้เสร็จเพื่อให้เร็วขึ้นในบางกรณี b/122358129
- เพิ่มการเปลี่ยนแปลงเพื่อจัดการกับเงื่อนไขการแข่งขันที่อาจเกิดขึ้นจากหลายอินสแตนซ์
ของ
LiveDataที่ WorkManager ใช้ - ย้ายไปใช้ทรัพยากร Dependency
1.1.1ของRoomแทน1.1.1-rc01แล้ว เหล่านี้ เหมือนกันทุกประการ b/122578011
19 ธันวาคม 2018
WorkManager
ปล่อย WorkManager 1.0.0-beta01 แล้ว รุ่นนี้ไม่มีการเปลี่ยนแปลง API นับแต่นี้ไป WorkManager จะมีความเสถียรของ API จนถึงเวอร์ชันถัดไป เว้นแต่จะมีปัญหาร้ายแรง รุ่นนี้มีการแก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่อง
- งานย่อยของผู้เผยแพร่โฆษณาหลักที่ประสบความสำเร็จซึ่งยกเลิกไปแล้วก่อนหน้านี้จะไม่ทำงานอีกต่อไป b/120811767
- คลาสการบันทึกเริ่มต้นอย่างเหมาะสม (จะแสดงระหว่างการทดสอบเป็นหลัก)
18 ธันวาคม 2018
การไปยังรายการต่างๆ
เปิดตัวการนำทาง 1.0.0-alpha09 แล้ว รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ
โปรดดูส่วนการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบด้านล่าง
เราเลือกที่จะไม่พัฒนา
อาร์ติแฟกต์ android.arch.navigation:navigation-testing รายการ แม้ว่าจะมีการพิสูจน์แล้ว
มีประโยชน์สำหรับการทดสอบภายในของ NavController เราขอแนะนำ
กลยุทธ์การทดสอบสำรอง เช่น การจำลองอินสแตนซ์ NavController
เพื่อยืนยันว่าการโทร navigate() ถูกต้อง ช่วงเวลานี้
จะกล่าวถึงรายละเอียดใน
การเสวนาเรื่องกิจกรรมเดี่ยวที่งาน AndroidDevSummit 2018
เราจะจัดทำเอกสารเพิ่มเติม โดยเฉพาะเกี่ยวกับการทดสอบ
ด้วยระบบนำทาง
ฟีเจอร์ใหม่
MenuItemที่มีmenuCategory="secondary"จะไม่แสดงด้านหลังอีกต่อไป ซ้อนเมื่อใช้กับNavigationUIเมธอด b/120104424- ตอนนี้
AppBarConfigurationให้คุณตั้งค่าวิดีโอสำรองแล้วOnNavigateUpListenerซึ่งจะถูกเรียกเมื่อnavController.navigateUp()กลับมาfalseb/79993862 b/120690961
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- เมื่อใช้
<argument>กับargType="reference"การนำทางจะไม่อีกต่อไป แยกวิเคราะห์ข้อมูลอ้างอิงแทนการระบุรหัสทรัพยากรดิบ b/111736515 onNavDestinationSelected()ระบบจะแสดงกลับไปที่จุดหมายเริ่มต้นของกราฟการนำทางโดยค่าเริ่มต้น ทำให้สอดคล้องกับเมธอดsetupเพิ่มmenuCategory="secondary"ในMenuItemเพื่อหลีกเลี่ยงการกองหลังทับ aosp/852869- ตอนนี้เมธอด
fromBundle()ของArgsคลาสที่สร้างขึ้นจะไม่ใช่ค่าว่างBundleแทนที่จะเป็นBundleที่ไม่มีข้อมูล aosp/845616
แก้ไขข้อบกพร่อง
- ตอนนี้ระบบแยกวิเคราะห์อาร์กิวเมนต์จาก Deep Link อย่างถูกต้องเป็น
argTypeที่ถูกต้องแล้ว แทนที่จะเป็นสตริงเสมอ b/110273284 - ขณะนี้การนำทางส่งออกทรัพยากรสาธารณะได้อย่างถูกต้องแล้ว b/121059552
- ตอนนี้ Safe Args ใช้ได้กับปลั๊กอิน Android Gradle 3.4 Canary 4 ขึ้นไปแล้ว b/119662045
12 ธันวาคม 2018
WorkManager
ปล่อย WorkManager 1.0.0-alpha13 แล้ว รุ่นนี้มีการเปลี่ยนแปลง API เล็กน้อยซึ่งจะเป็นประโยชน์สำหรับผู้ใช้ Kotlin บางราย
การเปลี่ยนแปลง API
- ย้าย
androidx.work.Resultไปเป็นชั้นเรียนภายในของListenableWorkerแล้ว การดำเนินการนี้ช่วยป้องกันการเปลี่ยนโครงสร้างภายในโค้ดขัดแย้งกับคลาสResultระดับบนสุดของ Kotlin การเปลี่ยนแปลงนี้ถือเป็นการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ b/120564418
การละเมิดการเปลี่ยนแปลง API
- ย้าย
androidx.work.Resultไปเป็นชั้นเรียนภายในของListenableWorkerแล้ว
6 ธันวาคม 2018
การแบ่งหน้า
ระบบจะเผยแพร่การแบ่งหน้า 2.1.0-rc01 โดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-beta01
การไปยังรายการต่างๆ
เปิดตัวการนำทาง 1.0.0-alpha08 แล้ว รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ
โปรดดูส่วนการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบด้านล่าง
ฟีเจอร์ใหม่
- ตอนนี้เมื่อใช้ร่วมกับ
NavigationUIเมธอด ป้ายกำกับปลายทางจะมีผลโดยอัตโนมัติ แทนที่{argName}อินสแตนซ์ในandroid:labelด้วยอาร์กิวเมนต์ที่ถูกต้อง b/80267266 - ขณะนี้การนำทางขึ้นอยู่กับไลบรารีการสนับสนุน 28.0.0 b/120293333
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
OnNavigatedListenerถูกเปลี่ยนชื่อเป็นOnDestinationChangedListenerแล้ว b/118670572- ตอนนี้
OnDestinationChangedListenerส่งผ่านอาร์กิวเมนต์Bundleด้วย aosp/837142 - แอตทริบิวต์
app:clearTaskและapp:launchDocumentและข้อมูลที่เกี่ยวข้อง ลบเมธอดแล้ว ใช้app:popUpToกับรากของกราฟเพื่อ นำปลายทางทั้งหมดออกจากแบ็กสแต็กของคุณ b/119628354 - ตอนนี้
ActivityNavigator.Extrasใช้รูปแบบBuilderและเพิ่มความสามารถในการ ตั้งค่าสถานะIntent.FLAG_ACTIVITY_ใดก็ได้ aosp/828140 NavController.onHandleDeepLinkถูกเปลี่ยนชื่อเป็นhandleDeepLinkแล้ว aosp/836063- มีคลาสและวิธีการมากมายที่ไม่ได้มีไว้สำหรับการแยกประเภทย่อย เช่น
NavOptions,NavInflater,NavDeepLinkBuilderและAppBarConfigurationกำหนดเป็นfinalแล้ว aosp/835681 - นำเมธอด
NavHostFragment.setGraph()ที่เลิกใช้งานแล้วออกแล้ว aosp/835684 - เมธอด
NavigationUI.navigateUp(DrawerLayout, NavController)ที่เลิกใช้งานแล้ว นำออกแล้ว aosp/835684 - การสร้าง Fragment ได้ย้ายไปที่
FragmentNavigatorซึ่งทำให้ มอบสิทธิ์การสร้าง Fragment ให้กับFragmentFactoryb/119054429 - ตัวสร้างสำหรับ
NavGraphNavigatorไม่ต้องใช้Contextอีกต่อไป aosp/835340 - NavigatorProvider เปลี่ยนชื่อเป็น
ชั้นเรียน แทนที่จะเป็นอินเทอร์เฟซ คืนเงิน
NavigatorProviderโดยgetNavigatorProvider()ไม่ได้เปลี่ยนฟังก์ชันการทำงาน aosp/830660 - นำ
NavDestination.navigate()ออกแล้ว โทรหาnavigate()บนNavigatorแทน aosp/830663 - การเปลี่ยนโครงสร้างภายในโค้ด
Navigatorอย่างมาก ทำให้ไม่จำเป็นต้องใช้OnNavigatorNavigatedListenerและให้navigateแสดงNavDestinationที่ถูกนำทางไปแทน - อินสแตนซ์
Navigatorรายการส่งเหตุการณ์ป๊อปอัปไปยังNavControllerไม่ได้อีกต่อไป พิจารณา ใช้OnBackPressedCallbackเพื่อ ดักจับการกดปุ่มย้อนกลับและโทรหาnavController.popBackStack()aosp/833716
แก้ไขข้อบกพร่อง
- ตอนนี้
popUpToทำงานอย่างสม่ำเสมอเมื่อปลายทางเป็นองค์ประกอบ<navigation>b/116831650 - แก้ไขข้อบกพร่องจำนวนหนึ่งที่ทำให้เกิด
IllegalArgumentExceptionเมื่อใช้กราฟซ้อน b/118713731 b/113611083 b/113346925 b/113305559 - ตอนนี้ระบบจะป้อนข้อมูลแอตทริบิวต์
dataPatternของปลายทาง<activity>อาร์กิวเมนต์จากอาร์กิวเมนต์ที่ไม่ใช่สตริงโดยการเรียกใช้toString()b/120161365
อาร์กิวเมนต์ที่ปลอดภัย
- Safe Args รองรับออบเจ็กต์ที่แยกอนุกรมได้ รวมถึงค่า Enum ประเภท enum
สามารถตั้งค่าเริ่มต้นโดยใช้ลิเทอรัล enum ที่ไม่มีชื่อคลาส
(เช่น
app:defaultValue="READ") b/111316353 - Safe Args รองรับอาร์เรย์ของทุกประเภทที่รองรับ b/111487504
- ตอนนี้ Safe Args จะไม่สนใจโฟลเดอร์ย่อยของไดเรกทอรีทรัพยากรแล้ว b/117893516
- Safe Args จะเพิ่มคำอธิบายประกอบ
@Overrideตามความเหมาะสม b/117145301
5 ธันวาคม 2018
WorkManager
ปล่อย WorkManager 1.0.0-alpha12 แล้ว รุ่นนี้มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบ โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบด้านล่าง เวอร์ชันนี้มีแนวโน้มที่จะเปิดตัวเป็นรุ่นเบต้าแรกของเรา นอกจากนี้ alpha12 ยังมีการอัปเดตเอกสารประกอบที่ครอบคลุมอีกด้วย
การเปลี่ยนแปลง API
- สิ่งประดิษฐ์ใหม่
work-rxjava2จะแนะนำRxWorkerนี่คือListenableWorkerที่คาดไว้Single<Payload> - การรองรับ Firebase JobDispatcher ถูกนำออกเนื่องจากการเลิกใช้งานที่กำลังจะเกิดขึ้น ซึ่งหมายความว่าอาร์ติแฟกต์
work-firebaseจะไม่อัปเดตอีกต่อไปเมื่อเราเข้าสู่รุ่นเบต้า เราจะเพิ่มทางเลือกอื่นในอนาคต - รวม
Payloadเป็นResultแล้ว ตอนนี้Resultเป็น "ชั้นเรียนที่ปิดผนึก" แล้ว ด้วยการติดตั้งใช้งานที่เป็นรูปธรรม 3 แบบ ซึ่งคุณจะได้รับผ่านResult.success()(หรือResult.success(Data)),Result.failure()(หรือResult.failure(Data)) และResult.retry()ตอนนี้ListenableFutureได้ผลลัพธ์เป็นResultจากเดิมPayloadWorkerไม่มีเมธอด Getter และ setter สำหรับเอาต์พุตDataนี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - เพิ่ม
Constraints.Builder.setTriggerContentMaxDelay(long, TimeUnit)และConstraints.Builder.setTriggerContentUpdateDelay(long, TimeUnit)และตัวแปรเพื่อให้รองรับ URI เนื้อหาที่เรียกใช้ได้ช้าได้ดียิ่งขึ้น b/119919774 - เพิ่มตัวแปร
WorkRequest.Builder.setBackoffCriteria(BackoffPolicy, Duration)รายการแล้ว วิธีนี้ต้องใช้ API 26 - เพิ่มเมธอดส่วนขยาย Kotlin
Operation.await()และListenableFuture.await()รายการแล้ว - เปลี่ยนชื่อ
Operation.getException()เป็นOperation.getThrowable()แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - คลาส
ContentUriTriggersและวิธีการที่อ้างอิงคลาสนี้ไม่สามารถใช้งานแบบสาธารณะได้อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - นำเมธอด varA ที่เหลือใน
WorkManager,WorkContinuationและOneTimeWorkRequestออกเพื่อปรับปรุง API ให้ดียิ่งขึ้น หากต้องการแก้ปัญหาเกี่ยวกับเวอร์ชัน คุณสามารถรวมตัวแปรที่มีอยู่ด้วยArrays.asList(...)เรายังคงรวมเวอร์ชันอาร์กิวเมนต์เดียวของแต่ละเมธอดไว้อยู่ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - นำตัวแปรออกแล้ว
WorkContinuation.combine(OneTimeWorkRequest, *)รายการ นักเรียนนำเสนอ API ที่สร้างความสับสน ทำให้เข้าใจเมธอดcombineที่มีอยู่ได้มากขึ้น นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
แก้ไขข้อบกพร่อง
- ในตอนนี้การติดตั้งใช้งาน Pre-Marshmallow มีความน่าเชื่อถือมากขึ้นในการกู้คืนกระบวนการที่ดำเนินการไปแล้วจากการทำงานที่ดำเนินอยู่
LiveDataที่สังเกตผ่านobserveForeverมีการติดตามผ่าน WorkManager นี่เป็นพอร์ตสำรองของการแก้ไขคลังห้องแชท b/74477406- ตอนนี้
Data.Builder.build()จะยกเว้นข้อยกเว้นหากวัตถุที่เรียงลำดับเกินขนาดสูงสุด โดยก่อนหน้านี้จะเกิดขึ้นเฉพาะในชุดข้อความพื้นหลังที่คุณไม่สามารถจัดการได้อย่างเหมาะสม - แยกระหว่างงานที่หยุดกับงานที่ยกเลิกแล้วเพิ่มเติม
getWorkInfoById()จะส่งกลับWorkInfoพร้อมStateของCANCELLEDระหว่างListenableWorker.onStopped() - ถือว่า
nullResultเป็นความล้มเหลวในListenableWorkerb/120362353 - การแก้ไขแบบคาดเดาสำหรับแท็บเล็ต Shield ที่ใช้ API 24 ซึ่งมี
IllegalArgumentExceptionในบางครั้ง b/119484416
การละเมิดการเปลี่ยนแปลง API
- การรองรับ Firebase JobDispatcher ถูกนำออกเนื่องจากการเลิกใช้งานที่กำลังจะเกิดขึ้น ซึ่งหมายความว่าอาร์ติแฟกต์
work-firebaseจะไม่อัปเดตอีกต่อไปเมื่อเราเข้าสู่รุ่นเบต้า เราจะเพิ่มทางเลือกอื่นในอนาคต - รวม
Payloadเป็นResultแล้ว ตอนนี้Resultเป็น "ชั้นเรียนที่ปิดผนึก" แล้ว ด้วยการติดตั้งใช้งานที่เป็นรูปธรรม 3 แบบ ซึ่งคุณจะได้รับผ่านResult.success()(หรือResult.success(Data)),Result.failure()(หรือResult.failure(Data)) และResult.retry()ตอนนี้ListenableFutureได้ผลลัพธ์เป็นResultจากเดิมPayloadWorkerไม่มีเมธอด Getter และ setter สำหรับเอาต์พุตData - เพิ่มเมธอดส่วนขยาย Kotlin
Operation.await()และListenableFuture.await()รายการแล้ว - เปลี่ยนชื่อ
Operation.getException()เป็นOperation.getThrowable()แล้ว - คลาส
ContentUriTriggersและวิธีการที่อ้างอิงคลาสนี้ไม่สามารถใช้งานแบบสาธารณะได้อีกต่อไป - นำเมธอด varA ที่เหลือใน
WorkManager,WorkContinuationและOneTimeWorkRequestออกเพื่อปรับปรุง API ให้ดียิ่งขึ้น หากต้องการแก้ปัญหาเกี่ยวกับเวอร์ชัน คุณสามารถรวมตัวแปรที่มีอยู่ด้วยArrays.asList(...)เรายังคงรวมเวอร์ชันอาร์กิวเมนต์เดียวของแต่ละเมธอดไว้อยู่ - นำตัวแปรออกแล้ว
WorkContinuation.combine(OneTimeWorkRequest, *)รายการ นักเรียนนำเสนอ API ที่สร้างความสับสน ทำให้เข้าใจเมธอดcombineที่มีอยู่ได้มากขึ้น
4 ธันวาคม 2018
ห้อง
ปล่อยห้อง 2.1.0-alpha03 แล้วพร้อมการรองรับโครูทีนและการแก้ไขข้อบกพร่องหลายรายการ
การเปลี่ยนแปลง API
- ตอนนี้ FTS
tokenizerใน@Fts3/@Fts4ใช้สตริงแทน Enum แล้ว การดำเนินการนี้จะอนุญาตให้ห้องแชทใช้โทเค็นที่กำหนดเองได้ เครื่องมือแปลงข้อมูลเป็นโทเค็นในตัวยังคงกำหนดไว้ในFtsOptionsเป็นค่าคงที่สตริง b/119234881
ฟีเจอร์ใหม่
- Couroutines: เมธอด DAO สามารถระงับฟังก์ชันได้แล้ว ระบบเผยแพร่อาร์ติแฟกต์ใหม่เพื่อรองรับการระงับฟังก์ชันในห้องแล้ว
room-coroutinesb/69474692 - ตอนนี้เมธอด DAO ที่มีคำอธิบายประกอบด้วย
@Insert,@Deleteหรือ@UpdateรองรับListenableFutureเป็นประเภทการแสดงผลแล้ว b/119418331
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ห้องพยายามค้นหาเครื่องมือสร้างที่มีคอลัมน์ในพร็อพเพอร์ตี้
ignoredColumnsของ@Entityอย่างไม่ถูกต้อง b/119830714 - แก้ไขข้อบกพร่องที่ Room ไม่ทำเครื่องหมายพารามิเตอร์เมธอด DAO ว่าเป็นพารามิเตอร์สุดท้ายในการใช้งานที่สร้างขึ้น b/118015483
- แก้ไขข้อบกพร่องที่ตัวประมวลผลของห้องขัดข้องเมื่อรายงานข้อผิดพลาดในการค้นหาที่มีสัญลักษณ์พิเศษ b/119520136
- แก้ไขข้อบกพร่องที่ห้องจะปฏิเสธการใช้งาน
Collectionอื่นๆ ที่เป็นอาร์กิวเมนต์ของนิพจน์INb/119884035 - แก้ไขข้อบกพร่องที่ LiveData ส่งคืนจากห้องเมื่อมีการเก็บขยะเมื่อสังเกตการณ์ตลอดไป ซึ่งทำให้ไม่ปล่อยข้อมูลใหม่อีก b/74477406
- อัปเดตแม่กุญแจของ
RoomDatabaseเพื่อลดการช่วงชิงล็อก b/117900450
8 พ.ย. 2018
WorkManager
ปล่อย WorkManager 1.0.0-alpha11 แล้ว รุ่นนี้มีการเปลี่ยนแปลงหลายอย่างที่จะเปลี่ยนเป็น API แบบเสถียรในวันที่ beta
มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบในรุ่นนี้ โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบด้านล่าง
การเปลี่ยนแปลง API
work-runtime-ktxขอแนะนำCoroutineWorkerใหม่- เปลี่ยนชื่อ
WorkStatusเป็นWorkInfoแล้ว ตัวแปรของเมธอดgetStatusที่เกี่ยวข้องทั้งหมดเปลี่ยนชื่อเป็น ตัวแปรgetWorkInfoที่เกี่ยวข้อง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ ListenableWorker.onStopped()ไม่ยอมรับอีกต่อไปมีอาร์กิวเมนต์บูลีนที่ระบุว่ามีการยกเลิกWorkRequestหรือไม่WorkManagerไม่ได้สร้างความแตกต่างนี้อีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ- แพ็กเกจ
androidx.work.testเปลี่ยนชื่อเป็นแพ็กเกจandroidx.work.testingแล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - ตัวตั้งค่าใน
Constraintsไม่ได้เป็นส่วนหนึ่งของ API สาธารณะแล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ WorkerParameters.getTriggeredContentUris()และWorkerParameters.getTriggeredContentAuthorities()แสดงผลอาร์เรย์ก่อนหน้านี้ ขณะนี้เมธอดเหล่านี้จะส่งคืนคอลเล็กชัน นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบListenableWorker.onStartWork()เปลี่ยนชื่อเป็นListenableWorker.startWork()แล้ว นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ- เครื่องมือสร้างสำหรับ
WorkStatusไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ Configuration.getMaxJobSchedulerID()และConfiguration.getMinJobSchedulerID()เปลี่ยนชื่อเป็นConfiguration.getMinJobSchedulerId()แล้ว และConfiguration.getMaxJobSchedulerId()ตามลำดับ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ- เพิ่มคำอธิบายประกอบ
@NonNullจำนวนมากลงใน API สาธารณะเพื่อปรับปรุงการยศาสตร์ของ API - เพิ่ม
WorkManager.enqueueUniqueWork()API เพื่อกำหนดลำดับของOneTimeWorkRequestที่ไม่ซ้ำกันโดยไม่ต้องสร้างWorkContinuation - ตอนนี้ตัวแปรทั้งหมดของเมธอด
enqueueและcancelในWorkManagerจะแสดงประเภทOperationใหม่ นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - ตัวแปรทั้งหมดของ
enqueueจะไม่ยอมรับตัวแปรสำหรับWorkRequestอีกต่อไป นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ โปรดใช้คอลเล็กชันแทน คุณใช้Arrays.asList()เพื่อแก้ไขโค้ดที่มีอยู่ได้ เราดำเนินการเช่นนี้เพื่อลดแพลตฟอร์ม API และจำนวนเมธอด - การพยายาม
initializeWorkManagerมากกว่า 1 ครั้งต่อกระบวนการจะส่งผลให้เกิดIllegalStateExceptionนี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
แก้ไขข้อบกพร่อง
- ตอนนี้
WorkRequest.Builderในอาร์ติแฟกต์work-runtime-ktxใช้ListenableWorkerการแก้ไข b/117666259 - ตรวจสอบว่าเวลาทำงานครั้งถัดไปของ
PeriodicWorkคือในอนาคต การแก้ไข b/118204399 - นำ I/O ของดิสก์ที่อาจเกิดขึ้นเมื่อใช้ WorkManager เมื่อเริ่มต้นแอป การแก้ไข b/117796731
- แก้ไขเงื่อนไขการแข่งขันใน
WorkConstraintsTrackerแก้ไข android-workmanager/issues/56
การละเมิดการเปลี่ยนแปลง API
- เปลี่ยนชื่อ
WorkStatusเป็นWorkInfoแล้ว ตัวแปรของเมธอดgetStatusที่เกี่ยวข้องทั้งหมดเปลี่ยนชื่อเป็น ตัวแปรgetWorkInfoที่เกี่ยวข้อง ListenableWorker.onStopped()ไม่ยอมรับอีกต่อไปมีอาร์กิวเมนต์บูลีนที่ระบุว่ามีการยกเลิกWorkRequestหรือไม่WorkManagerไม่ได้สร้างความแตกต่างนี้อีกต่อไป- แพ็กเกจ
androidx.work.testเปลี่ยนชื่อเป็นแพ็กเกจandroidx.work.testingแล้ว - ตัวตั้งค่าใน
Constraintsไม่ได้เป็นส่วนหนึ่งของ API สาธารณะแล้ว WorkerParameters.getTriggeredContentUris()และWorkerParameters.getTriggeredContentAuthorities()แสดงผลอาร์เรย์ก่อนหน้านี้ ขณะนี้เมธอดเหล่านี้จะส่งคืนคอลเล็กชันListenableWorker.onStartWork()เปลี่ยนชื่อเป็นListenableWorker.startWork()แล้ว- เครื่องมือสร้างสำหรับ
WorkStatusไม่ได้เป็นส่วนหนึ่งของ API สาธารณะอีกต่อไป Configuration.getMaxJobSchedulerID()และConfiguration.getMinJobSchedulerID()เปลี่ยนชื่อเป็นConfiguration.getMinJobSchedulerId()แล้ว และConfiguration.getMaxJobSchedulerId()ตามลำดับ- ตอนนี้ตัวแปรทั้งหมดของเมธอด
enqueueและcancelในWorkManagerจะแสดงประเภทOperationใหม่ - ตัวแปรทั้งหมดของ
enqueueจะไม่ยอมรับตัวแปรสำหรับWorkRequestอีกต่อไป - การพยายาม
initializeWorkManagerมากกว่า 1 ครั้งต่อกระบวนการจะส่งผลให้เกิดIllegalStateException
1 พฤศจิกายน 2018
การแบ่งหน้า
ระบบจะเผยแพร่การแบ่งหน้า 2.1.0-beta01 โดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-alpha01
30 ตุลาคม 2018
ห้อง
ปล่อยห้อง 2.1.0-alpha02 ให้แก้ไขข้อบกพร่องหลายรายการและฟีเจอร์ใหม่
ฟีเจอร์ใหม่
- เพิ่มการรองรับการอ้างอิง
@DatabaseViewใน@Relationb/117680932
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ Room จะทำ I/O ดิสก์ในเทรดหลักเมื่อสมัครใช้บริการและกำจัดจากประเภทการแสดงผล Rx b/117201279
- แก้ไขข้อบกพร่องที่ Room ไม่พบเครื่องมือแปลงประเภทที่เหมาะสมสำหรับช่องในคลาสเอนทิตี Kotlin b/111404868
- แก้ไขข้อบกพร่องที่ Room จะสร้างโค้ดที่ไม่ถูกต้องสำหรับการใช้งานอินเทอร์เฟซ
DAOที่มีเมธอด Kotlin เริ่มต้นที่ไม่มีอาร์กิวเมนต์ b/117527454 - อัปเดตโปรแกรมแยกวิเคราะห์ไวยากรณ์ SQLite ของห้องแล้ว ซึ่งช่วยแก้ไขปัญหาด้านประสิทธิภาพที่อาจทำให้ใช้เวลาสร้างนาน b/117401230
29 ตุลาคม 2018
การไปยังรายการต่างๆ
การนำทาง 1.0.0-alpha07 เปิดตัวแล้วพร้อมการแก้ไขข้อบกพร่องและการเปลี่ยนแปลง API
ฟีเจอร์ใหม่
- AppBarConfiguration ใหม่ ทำให้คุณสามารถกำหนดปลายทางที่ถือว่าเป็นระดับบนสุดได้ ปลายทาง ดูเอกสารฉบับปรับปรุง เพื่อดูรายละเอียด b/117333663
- คุณส่งอาร์กิวเมนต์ไปยังปลายทางเริ่มต้นของกราฟได้แล้ว b/110300470
- ตอนนี้ Deep Link รองรับรูปแบบที่กำหนดเองซึ่งมีจุด ขีดกลาง และเครื่องหมายบวกแล้ว b/112806402
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- พับโมดูล
navigation-testing-ktxลงในnavigation-testing artifactและจะไม่เผยแพร่อีก - ตอนนี้อาร์ติแฟกต์
navigation-testingต้องใช้มาตรฐาน Kotlin แล้ว ไลบรารี มีการเปลี่ยนแปลง API ให้สอดคล้องกับ Kotlin มากขึ้น แต่คุณสามารถใช้สำหรับการทดสอบที่เขียนด้วย Java ต่อไปได้ - ไม่สนับสนุนกราฟการนำทางที่ลงทะเบียนในไฟล์ Manifest ของข้อมูลเมตาอีกต่อไป b/118355937
- แนบการดำเนินการกับ <activity> ไม่ได้อีกต่อไป ปลายทาง aosp/785539
แก้ไขข้อบกพร่อง
- Deep Link แยกวิเคราะห์พารามิเตอร์การค้นหาได้อย่างถูกต้องแล้วในตอนนี้ b/110057514
- ปลายทางของกิจกรรมใช้ภาพเคลื่อนไหวแบบเข้าและออกทั้งหมดอย่างถูกต้องแล้ว b/117145284
- แก้ไขข้อขัดข้องที่เกิดขึ้นหลังจากการเปลี่ยนแปลงการกำหนดค่าเมื่อใช้ การนำทาง b/110763345
อาร์กิวเมนต์ที่ปลอดภัย
- ตอนนี้อาร์กิวเมนต์ที่ปลอดภัยใช้ปลั๊กอิน Android Gradle 3.2.1 แบบคงที่แล้ว b/113167627
- สามารถสร้างเส้นทางสำหรับชั้นเรียนภายในได้แล้ว b/117407555
- แก้ไขปัญหาเกี่ยวกับการสร้างเส้นทางไปยัง <include> กราฟ b/116542123
12 ตุลาคม 2018
การแบ่งหน้า
เผยแพร่หน้า 2.1.0-alpha01 พร้อมกับการเพิ่มหลัก 2 รายการ ได้แก่ การลบหน้าและไลบรารีส่วนขยาย KTX สำหรับทุกอาร์ติแฟกต์ รวมถึงการเปลี่ยนแปลง API และการแก้ไขข้อบกพร่องอื่นๆ อีกหลายรายการ
การเปลี่ยนแปลง API
- เพิ่ม
PagedList.Config.Builder.setMaxSize()เพื่อจำกัดจำนวนรายการที่โหลดในหน่วยความจำ - เพิ่ม
androidx.paging.Config()เป็นทางเลือกของ Kotlin สำหรับPagedList.Config.Builderแล้ว - เพิ่ม
androidx.paging.PagedList()เป็นทางเลือกของ Kotlin สำหรับPagedList.Builderแล้ว - เพิ่ม
DataSourceFactory.toLiveData()เป็นทางเลือกของ Kotlin สำหรับLivePagedListBuilderแล้ว - เพิ่ม
DataSourceFactory.toObservable()และtoFlowable()เป็นทางเลือกของ Kotlin สำหรับRxPagedListBuilderแล้ว - เพิ่ม
AsyncPagedListDiffer.addPagedListListener()เพื่อฟังเมื่อมีการสลับ PagedList b/111698609 - เพิ่ม
PagedListAdapter.onCurrentListChanged()ตัวแปรที่ผ่านรายการเก่าและใหม่ ตัวแปรก่อนหน้าที่เลิกใช้งานแล้ว - เพิ่มรูปแบบ
PagedListAdapter/AsyncPagedListDiffer.submitList()แล้ว ซึ่งจะใช้ Callback เพิ่มเติมซึ่งจะทริกเกอร์หาก/เมื่อรายการแบ่งหน้าแสดงขึ้นหลังจากความแตกต่าง ซึ่งจะช่วยให้คุณซิงค์การสลับ PagedList กับการอัปเดต UI อื่นๆ ได้ b/73781068 - เพิ่ม
PagedList.getLoadedCount()แล้วเพื่อแจ้งจำนวนรายการในหน่วยความจำ โปรดทราบว่าผลลัพธ์จะเท่ากับ.size()เสมอหากปิดใช้ตัวยึดตำแหน่ง
แก้ไขข้อบกพร่อง
- แก้ไขเงื่อนไขการแข่งขันเมื่อแยกความแตกต่างระหว่างการนำรายชื่อมาใช้ซ้ำ b/111591017
- ตอนนี้
PagedList.loadAround()แสดงผลIndexOutOfBoundsExceptionเมื่อดัชนีไม่ถูกต้อง ก่อนหน้านี้ อุปกรณ์อาจขัดข้องโดยไม่ทราบข้อยกเว้นอื่นๆ ที่ไม่ชัดเจน - แก้ไขกรณีที่การโหลดเริ่มต้นขนาดเล็กมากและข้อมูลที่ไม่เปลี่ยนแปลงจะทำให้ไม่มีการโหลด b/113122599 อีก
11 ตุลาคม 2018
WorkManager
เปิดตัว WorkManager 1.0.0-alpha10 พร้อมการรองรับงานแบบไม่พร้อมกันที่ควบคุมโดยนักพัฒนาซอฟต์แวร์ มีการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบในรุ่นนี้ โปรดดูส่วนการเปลี่ยนแปลง API ที่ส่งผลกับส่วนอื่นในระบบด้านล่าง
เราคาดว่า WorkManager กำลังเข้าสู่ช่วงสุดท้ายของระยะเวลาอัลฟ่า เราคาดหวังว่า API จะมีความเสถียรในรุ่นเบต้า ดังนั้นโปรดสละเวลาส่งความคิดเห็นของคุณเกี่ยวกับเครื่องมือติดตามปัญหาของเรา
การเปลี่ยนแปลง API
- นำเมธอดและคลาส
deprecatedก่อนหน้านี้ทั้งหมดออก โดยเฉพาะตัวสร้างWorkerที่เป็นค่าเริ่มต้น การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ - เปลี่ยนชื่อ
NonBlockingWorkerเป็นListenableWorkerแล้ว ซึ่งเป็นชั้นเรียนสาธารณะที่เลิกซ่อนและพร้อมใช้งานListenableWorkerให้สิทธิ์เข้าถึงเมธอดนามธรรม 1 วิธี ซึ่งก็คือListenableFuture<Payload> onStartWork()ในชุดข้อความหลัก การเริ่มและประมวลผลงานแบบไม่พร้อมกันขึ้นอยู่กับคุณ เมื่อเสร็จแล้ว คุณควรอัปเดตListenableFutureอย่างเหมาะสม ดูการติดตั้งใช้งานListenableFutureอ้างอิงได้ในแพ็กเกจFuturesในalpha02(ดูด้านล่างส่วนWorkManager)WorkerขยายListenableWorkerและยังคงทำงานเหมือนก่อนหน้านี้ ด้วยเมธอดResult doWork()แบบนามธรรม- สับเปลี่ยนวิธีการและสมาชิกบางรายการจาก
Workerเป็นListenableWorker - ในเร็วๆ นี้เราจะติดตั้งใช้งานการอ้างอิงสำหรับ
ListenableWorkerที่ใช้โครูทีน Kotlin (เมื่อมีการเผยแพร่เวอร์ชันเสถียร) และ RxJava2
- อินเทอร์เฟซ
WorkerFactoryและการใช้งานที่เป็นรูปธรรมDefaultWorkerFactoryได้รวมกันเป็นคลาสนามธรรมชื่อWorkerFactoryแล้ว การติดตั้งใช้งานนี้ช่วยให้มั่นใจว่าระบบจะเรียกลักษณะการทำงานที่อิงตามการสะท้อนเริ่มต้นว่าเป็นความพยายามสุดท้ายสำหรับอินสแตนซ์WorkerFactoryที่ผู้ใช้สร้างขึ้น นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ - นำ
WorkManager.synchronous()และWorkContinuation.synchronous()และวิธีการที่เกี่ยวข้องทั้งหมดออก เพิ่มListenableFuture<Void>เป็นประเภทการแสดงผลของเมธอดมากมายใน API การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ- ตอนนี้คุณรับและสังเกตการณ์พร้อมกันโดยใช้
ListenableFutureได้แล้ว เช่นWorkManager.enqueue()ใช้เพื่อแสดงผลvoidตอนนี้ก็จะแสดงListenableFuture<Void>คุณสามารถเรียกใช้ListenableFuture.addListener(Runnable, Executor)หรือListenableFuture.get()เพื่อเรียกใช้โค้ดเมื่อการดำเนินการเสร็จสมบูรณ์แล้ว - โปรดทราบว่า
ListenableFutureเหล่านี้ไม่ได้บอกคุณว่าการดำเนินการสำเร็จหรือล้มเหลว เมื่ออ่านจบแล้วเท่านั้น คุณยังคงต้องเชื่อมโยงเมธอด WorkManager เข้าด้วยกันเพื่อค้นหาข้อมูลนี้ - เราไม่สนใจการเรียกใช้
cancel()สำหรับออบเจ็กต์เหล่านี้ เนื่องจากจะทำให้สับสนและอธิบายได้ยาก (คุณยกเลิกการดำเนินการหรือผลที่ได้) ซึ่งอยู่ภายในสัญญาของFuture - เพื่อคงความสอดคล้องกับเมธอด
getStatus*แบบซิงโครนัส เราได้จัดเตรียมตัวแปรListenableFutureรายการและเปลี่ยนชื่อตัวแปรที่มีอยู่ซึ่งแสดงผลLiveDataให้มี "LiveData" อย่างชัดเจน เป็นส่วนหนึ่งของชื่อ (เช่นgetStatusesByIdLiveData(UUID)) การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้คุณรับและสังเกตการณ์พร้อมกันโดยใช้
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาที่รู้จักจาก alpha09 เกี่ยวกับไฟล์
androidx-annotations.proที่ซ้ำกัน คุณสามารถนำวิธีแก้ปัญหาชั่วคราวออกจากบันทึกประจำรุ่นก่อนหน้าได้โดยลบexclude 'META-INF/proguard/androidx-annotations.pro'ออกจากไฟล์ Gradle - เพิ่มการกำหนดค่า Proguard เพื่อเก็บตัวสร้าง
Workerใหม่ไว้ b/116296569 - แก้ไข
NullPointerExceptionที่เป็นไปได้ในเงื่อนไขการแข่งขันที่ปริมาณงานREPLACEวัน b/116253486 และ b/116677275 WorkContinuation.combine()ยอมรับWorkContinuationอย่างน้อย 1 รายการ แทนที่จะเป็น 2 รายการขึ้นไป b/117266752
การละเมิดการเปลี่ยนแปลง API
- นำเมธอดและคลาส
deprecatedก่อนหน้านี้ทั้งหมดออก โดยเฉพาะตัวสร้างWorkerที่เป็นค่าเริ่มต้น - อินเทอร์เฟซ
WorkerFactoryและการใช้งานที่เป็นรูปธรรมDefaultWorkerFactoryได้รวมกันเป็นคลาสนามธรรมชื่อWorkerFactoryแล้ว - นำ
WorkManager.synchronous()และWorkContinuation.synchronous()ออกแล้ว - ตอนนี้เมธอด
WorkManager.getStatus*()แสดงผลListenableFutureวินาทีWorkManager.getStatus*LiveData()ส่งกลับLiveData
ฟิวเจอร์ส
ปล่อยสัญญาซื้อขายล่วงหน้า 1.0.0-alpha02 แล้ว
การเปลี่ยนแปลง API
- ตอนนี้นักพัฒนาแอปสามารถใช้
ResolvableFutureและAbstractResolvableFutureเป็นการติดตั้งใช้งานListenableFutureอย่างเป็นรูปธรรมเพียงเล็กน้อยได้แล้ว
8 ตุลาคม 2018
ห้อง
ปล่อยห้อง 2.1.0-alpha01 แล้ว
ฟีเจอร์ใหม่
- FTS: ขณะนี้ Room รองรับเอนทิตีที่มีตาราง FTS3 หรือ FTS4 การจับคู่ ตอนนี้คุณสามารถใส่คำอธิบายประกอบด้วย
@Fts3หรือ@Fts4ชั้นเรียนที่มีคำอธิบายประกอบด้วย@Entityเพิ่มเติม เพื่อประกาศชั้นเรียนด้วยตารางการค้นหาข้อความแบบเต็มการแมป ตัวเลือก FTS สำหรับการปรับแต่งเพิ่มเติมจะพร้อมใช้งานผ่านเมธอดของคำอธิบายประกอบ b/62356416 - ข้อมูลพร็อพเพอร์ตี้: ขณะนี้ห้องแชทรองรับการประกาศคลาสเป็นการค้นหาที่จัดเก็บไว้ หรือที่เรียกว่าข้อมูลพร็อพเพอร์ตี้ที่ใช้คำอธิบายประกอบ @DatabaseView b/67033276
- ค่าอัตโนมัติ: ตอนนี้ Room รองรับการประกาศคลาสที่มีคำอธิบายประกอบ AutoValue เป็นเอนทิตีและ POJO แล้ว คุณประกาศคำอธิบายประกอบห้อง
@PrimaryKey,@ColumnInfo,@Embeddedและ@Relationในเมธอดนามธรรมของชั้นเรียนที่มีคำอธิบายประกอบแล้วโดยอัตโนมัติได้ โปรดทราบว่าคำอธิบายประกอบเหล่านี้ต้องมาพร้อมกับ@CopyAnnotationsด้วยเพื่อให้ห้องแชทเข้าใจได้อย่างถูกต้อง b/62408420 - การสนับสนุนประเภทการคืนสินค้า Rx เพิ่มเติม: เมธอด DAO ที่มีคำอธิบายประกอบ
@Insert,@Deleteหรือ@Updateรองรับการแสดงผล Rx ประเภทCompletable,Single<T>และMaybe<T>แล้ว b/63317956 - ประเภทที่เปลี่ยนแปลงไม่ได้ด้วย
@Relation: ก่อนหน้านี้ห้องแชทกำหนดให้ตั้งค่าช่องที่มีคำอธิบายประกอบ@Relationได้ แต่ตอนนี้เป็นพารามิเตอร์ตัวสร้างได้ enableMultiInstanceInvalidation: เป็น API ใหม่ในRoomDatabase.Builderเพื่อเปิดใช้การทำให้เป็นโมฆะใน RoomDatabase หลายรายการโดยใช้ไฟล์ฐานข้อมูลเดียวกัน กลไกการทำให้เป็นโมฆะแบบหลายอินสแตนซ์นี้ยังทำงานได้กับหลายกระบวนการอีกด้วย b/62334005fallbackToDestructiveMigrationOnDowngrade: เป็น API ใหม่ในRoomDatabase.Builderเพื่อสร้างฐานข้อมูลใหม่โดยอัตโนมัติหากมีการดาวน์เกรด b/110416954ignoredColumns: เป็น API ใหม่ในคำอธิบายประกอบ@Entityที่สามารถใช้เพื่อแสดงรายการช่องที่ละเว้นตามชื่อได้ มีประโยชน์สำหรับการละเว้นช่องที่รับช่วงมาในเอนทิตี b/63522075
การเปลี่ยนแปลง API / ลักษณะการทำงาน
- ขณะนี้
mCallbackและmDatabaseในRoomDatabaseเปลี่ยนเป็น@Deprecatedแล้ว และจะถูกนำออกจากห้องแชทเวอร์ชันหลักเวอร์ชันถัดไป b/76109329
แก้ไขข้อบกพร่อง
- แก้ไขปัญหา 2 ข้อที่ห้องแชทไม่สามารถกู้คืนได้อย่างถูกต้องจากฐานข้อมูลที่เสียหาย หรือการย้ายข้อมูลที่ไม่ดีระหว่างการเริ่มต้น b/111504749 และ b/111519144
- ขณะนี้ Room จะใช้ตัวสร้างหลักของ Kotlin ในคลาสข้อมูลอย่างถูกต้องเพื่อหลีกเลี่ยงไม่ให้ต้องประกาศฟิลด์เป็น
varsb/105769985
1 ตุลาคม 2018
ระบบปล่อยห้อง 2.0.0 แล้วโดยไม่มีการเปลี่ยนแปลงจาก 2.0.0-rc01
เผยแพร่การแบ่งหน้า 2.0.0 แล้วด้วยการแก้ไขข้อบกพร่องเพียงจุดเดียว
การแบ่งหน้า
แก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่อาจเกิดขึ้นกับการเลื่อนเร็วมากโดยใช้
PositionalDataSourceและตัวยึดตำแหน่ง b/114635383
21 กันยายน 2018
เผยแพร่วงจร 2.0.0 พร้อมกับการแก้ไขข้อบกพร่อง 1 รายการจาก 2.0.0-rc01 ใน ViewModel
วงจร
แก้ไขข้อบกพร่อง
- แก้ไขกฎ Proguard ของ ViewModel ที่นำตัวสร้างออกอย่างไม่ถูกต้อง b/112230489
20 กันยายน 2018
การไปยังรายการต่างๆ
การนำทาง 1.0.0-alpha06 เปิดตัวแล้วพร้อมการแก้ไขข้อบกพร่องและการเปลี่ยนแปลง API
ฟีเจอร์ใหม่
- ตอนนี้ระบบรองรับการเปลี่ยนองค์ประกอบที่แชร์สำหรับปลายทางของส่วนย่อยและกิจกรรมแล้ว b/79665225 ดูข้อมูลเพิ่มเติมได้ที่ใช้การนำทางด้วยคอมโพเนนต์สถาปัตยกรรมการนำทาง
- ตอนนี้การเลือกรายการใน
NavigationViewจะเป็นการปิด Bottom Sheet b/112158843
การเปลี่ยนแปลง API
- การเปลี่ยนแปลงสำคัญ: ตอนนี้เมธอด Navigator
navigate()จะใช้พารามิเตอร์Navigator.Extras - ตอนนี้เมธอด
getGraph()ของ NavController คือNonNullb/112243286
แก้ไขข้อบกพร่อง
NavigationUI.setupWithNavController()ไม่ทำให้ข้อมูลรั่วไหลอีกต่อไปหากใช้กับยอดดูจากปลายทางแต่ละแห่ง b/111961977- ตอนนี้มีการเรียกใช้การนำทาง
onSaveState()เพียงครั้งเดียว b/112627079
อาร์กิวเมนต์ที่ปลอดภัย
- ตอนนี้คลาสปลายทางของการนำทางจะขยายคลาสเส้นทางของผู้ปกครองได้ หากมี b/79871405
- ตอนนี้คลาสเส้นทางและ Args มีการใช้
toString()ที่เป็นประโยชน์ b/111843389
19 กันยายน 2018
WorkManager
WorkManager 1.0.0-alpha09 เปิดตัวพร้อมการแก้ไขข้อบกพร่อง การอัปเดตโครงสร้างพื้นฐาน และการเปลี่ยนแปลง API
ปัญหาที่ทราบ
หากพบปัญหา "พบไฟล์มากกว่า 1 ไฟล์ในเส้นทางที่ไม่ขึ้นกับระบบปฏิบัติการ 'META-INF/proguard/androidx-annotations.pro'" โปรดใส่ข้อมูลต่อไปนี้ในไฟล์ Gradle เป็นวิธีแก้ปัญหาชั่วคราวขณะที่เราแก้ไขปัญหาใน Alpha10
ดึงดูด
android { packagingOptions { exclude 'META-INF/proguard/androidx-annotations.pro' } }
Kotlin
android { packagingOptions { exclude("META-INF/proguard/androidx-annotations.pro") } }
แก้ไขข้อบกพร่อง
- เพิ่มการแก้ไขอีกรายการที่จำเป็นสำหรับ "100 งาน" b/115560696
- เพิ่มการแก้ไขบางส่วนสำหรับข้อผิดพลาดเกี่ยวกับข้อจำกัดคีย์นอกเนื่องจากเงื่อนไขการแข่งขัน b/114705286
- มอบสิทธิ์การโทร
ConstraintTrackingWorker.onStopped(boolean)ไปยังWorkerที่เกี่ยวข้องแล้ว b/114125093 - บังคับใช้การหน่วงเวลา Backoff ขั้นต่ำที่ถูกต้องสำหรับ Firebase JobDispatcher b/113304626
- ชุดข้อความที่ได้รับการปรับปรุงเพื่อรับประกันการเข้าถึงภายในไลบรารี
- แก้ไขปัญหาที่อาจเกิดขึ้นกับการกรองข้อมูล
LiveDataที่ซ้ำกันออกภายใน
การเปลี่ยนแปลง API
- ตอนนี้คุณสร้างอินสแตนซ์
Workerของคุณเองระหว่างรันไทม์ได้แล้ว โดยระบุWorkerFactoryเป็นส่วนหนึ่งของWorkManager.Configurationค่าเริ่มต้นจากโรงงานสำรองคือDefaultWorkerFactoryซึ่งตรงกับลักษณะการทำงานของ WorkManager เวอร์ชันก่อนหน้า- ตอนนี้ตัวสร้างเริ่มต้นสำหรับ
WorkerและNonBlockingWorkerถูกทำเครื่องหมายเป็นเลิกใช้งานแล้ว โปรดใช้ตัวสร้างใหม่ (Worker(Context, WorkerParameters)) และเรียกsuper(Context, WorkerParameters)WorkManager เวอร์ชันต่อๆ ไปจะนำตัวสร้างเริ่มต้นออก
- ตอนนี้ตัวสร้างเริ่มต้นสำหรับ
- เราเริ่มใช้อาร์ติแฟกต์
ListenableFutureใหม่ภายในแล้ว (ไม่มีทรัพยากร Dependency ของ Guava) เราจะแนะนำ ListenableFutures สำหรับ API ในรุ่นต่อๆ ไป การเปลี่ยนแปลงนี้จะรองรับการเลิกซ่อนNonBlockingWorkerในท้ายที่สุด - เพิ่มความสามารถในการทริกเกอร์งานที่กําหนดเวลาไว้ใน
TestDriverผ่านTestDriver.setInitialDelayMet(UUID)และTestDriver.setPeriodDelayMet(UUID)b/113360060
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตัวสร้าง
WorkerและNonBlockingWorkerเริ่มต้นเลิกใช้งานแล้ว โปรดย้ายข้อมูลไปยังตัวสร้างใหม่โดยเร็วที่สุด เวอร์ชันในอนาคตจะนำตัวสร้างเริ่มต้นออก
27 สิงหาคม 2018
WorkManager
WorkManager 1.0.0-alpha08 เปิดตัวแล้วพร้อมการแก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่อง
- คอมโพเนนต์ WorkManager ที่ติดป้ายกำกับอย่างชัดแจ้งว่าเป็นการเปิดเครื่องโดยตรงไม่ทราบ เพื่อไม่ให้เกิดการเริ่มทำงานระหว่างการเปิดเครื่องโดยตรง ในอนาคต เราจะให้บริการ WorkManager เวอร์ชันที่มีการตรวจพบการเปิดเครื่องโดยตรง b/112665532
- แก้ไขปัญหาที่ลองทำซ้ำไม่ได้ b/112604021
- แก้ไขการทำงานตามรอบโดยไม่ทำงานซ้ำๆ (ซึ่งเกี่ยวข้องกับปัญหาข้างต้น) b/112859683
- ยอมรับนโยบาย Backoff เมื่อกระบวนการของแอปทำงานอยู่แล้ว
- แก้ไขข้อความข้อยกเว้นใน
Dataเพื่อระบุว่าขีดจำกัดอยู่ที่ 10 KB - ลดค่าสูงสุดจาก
Configuration.setMaxSchedulerLimit(int)เป็น 50 เพื่อรองรับเวลาในการตอบสนองบางส่วนในการประมวลผลJobSchedulerจนเสร็จ b/112817355
16 สิงหาคม 2018
WorkManager
WorkManager 1.0.0-alpha07 เปิดตัวพร้อมการแก้ไขข้อบกพร่องและการเปลี่ยนแปลง API เล็กน้อย
แก้ไขข้อบกพร่อง
- แก้ไขการค้นหา SQL ที่เป็นไปได้ที่มีขีดจำกัดเชิงลบที่อาจแสดงผลลัพธ์ที่ไม่มีขอบเขต
- งานที่เสร็จสิ้นการดำเนินการแล้วจะยกเลิกสำเนาทั้งหมดที่รอดำเนินการอยู่ในโปรแกรมจัดตารางเวลาอื่นๆ ได้อย่างถูกต้อง ปัญหานี้ทำให้มีงานเกินขีดจำกัด
JobSchedulerงาน b/111569265 - แก้ไข
ConcurrentModificationExceptionในConstraintTrackerแล้ว b/112272753 - เปลี่ยนคำอธิบายประกอบประเภทการแสดงผล
Data.getBooleanArray(String)และData.getIntArray(String)เป็น@Nullableแทน@NonNullb/112275229
การเปลี่ยนแปลง API
- ขณะนี้
Workerได้ขยายชั้นเรียนใหม่ ซึ่งก็คือNonBlockingWorkerแล้ว การดำเนินการนี้จะไม่ส่งผลต่อการใช้งานปัจจุบัน ในอนาคตNonBlockingWorkerจะเป็นเอนทิตีที่รองรับอย่างเต็มรูปแบบสำหรับโซลูชันการแยกชุดข้อความที่กำหนดเอง - เปลี่ยนคำอธิบายประกอบประเภทการแสดงผล
Data.getBooleanArray(String)และData.getIntArray(String)เป็น@Nullableแทน@NonNullb/112275229 - ส่วนขยาย Kotlin: เลิกใช้งาน
Map.toWorkData()และเพิ่มworkDataOf(vararg Pair<String, Any?>)ระดับบนสุดเพื่อให้สอดคล้องกับ API ที่มีอยู่มากขึ้น
10 สิงหาคม 2018
การไปยังรายการต่างๆ
การนำทาง 1.0.0-alpha05 เปิดตัวแล้วพร้อมการแก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องที่ทำให้เกิดลักษณะการทำงานของ Backstack ที่ไม่ถูกต้อง b/111907708
- แก้ไขข้อบกพร่องในคลาส Args ที่สร้างขึ้น
equals()รายการ b/111450897 - แก้ไขความล้มเหลวของบิลด์ใน Safe Args b/109409713
- แก้ไขการแปลงจากตัวระบุทรัพยากรเป็นชื่อ Java b/111602491
- แก้ไขข้อความแสดงข้อผิดพลาดเกี่ยวกับความสามารถในการเว้นว่างในปลั๊กอิน Safe Args
- เพิ่มคำอธิบายประกอบที่ไม่มีข้อมูล
6 สิงหาคม 2018
Lifecycle, Room และ Paging ใน AndroidX เวอร์ชัน 2.0.0-rc01 อาร์ติแฟกต์ทั้งหมดไม่มีการเปลี่ยนแปลงจาก 2.0.0-beta01
1 สิงหาคม 2018
WorkManager
WorkManager 1.0.0-alpha06 เปิดตัวแล้วพร้อมการแก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่อง
- ป้องกันการล็อกฐานข้อมูลเมื่อกำหนดเวลางาน b/111801342
- แก้ไขข้อบกพร่องที่ทำให้
PeriodicWorkไม่ทำงานตามกำหนดเวลาเมื่ออยู่ในโหมด Doze b/111469837 - แก้ไขเงื่อนไขการแข่งขันเมื่อข้อจํากัดการติดตามซึ่งทําให้
WorkManagerขัดข้อง googlecodelabs/android-workmanager/issues/56 - สร้าง
WorkRequestที่ไม่ซ้ำกันเมื่อใช้WorkRequest.Builder#build()b/111408337 - เปิดใช้
RescheduleReceiverเฉพาะเมื่อมีWorkRequestที่จำเป็นต้องใช้เท่านั้น b/111765853
24 กรกฎาคม 2018
WorkManager
WorkManager 1.0.0-alpha05 เปิดตัวพร้อมการแก้ไขข้อบกพร่องที่สำคัญและการเปลี่ยนแปลงการบันทึก
การเปลี่ยนแปลง API
- ตอนนี้
WorkManager.getInstance()จะมีคำอธิบายประกอบด้วย@NonNullแทน@Nullableแต่หากไม่ได้เริ่มต้น Singleton อย่างถูกต้องในกรณีที่เริ่มต้นด้วยตนเอง เมธอดดังกล่าวจะแสดงIllegalStateExceptionนี่คือ ที่ส่งผลกับการเปลี่ยนแปลง API - เพิ่ม API ใหม่ชื่อ
Configuration.Builder.setMinimumLoggingLevel(int)ซึ่งควบคุมการพูดรายละเอียดของ WorkManager ได้ โดยค่าเริ่มต้น WorkManager จะบันทึกLog.INFOขึ้นไป - เปลี่ยนลายเซ็นของ
Data.getString()เพื่อไม่ให้ใช้ค่าเริ่มต้นอีกต่อไป (โดยปริยายคือnull) การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ - ทำเครื่องหมายบางวิธีการว่าจำเป็นต้องใช้เฉพาะสำหรับการใช้งานภายในเป็น
@hideซึ่งรวมถึงตัวสร้างConstraints,Data.toByteArray()และData.fromByteArray(byte[])การเปลี่ยนแปลงนี้ส่งผลกับ API ที่ส่งผลกับส่วนอื่นในระบบ
แก้ไขข้อบกพร่อง
- WorkManager จะไม่ทำงานอีกต่อไประหว่างกรณีการสำรองข้อมูลอัตโนมัติที่ทราบ ซึ่งอาจส่งผลให้เกิดข้อขัดข้อง b/110564377
- แก้ไขการตั้งเวลา
PeriodicWorkRequest2 ครั้งเมื่อใช้JobSchedulerb/110798652 - แก้ไขปัญหา
PeriodicWorkRequestไม่ทำงานอย่างถูกต้องหลังจากหยุดอุปกรณ์ชั่วคราว b/111469837 - แก้ไขปัญหาความล่าช้าเริ่มต้นเมื่อใช้ Firebase JobDispatcher b/111141023
- แก้ไขสภาวะการแข่งขันและปัญหาเวลาที่อาจเกิดขึ้น
- เพิ่มพื้นที่ว่าง
BroadcastReceiverวินาทีที่ไม่ต้องการแล้วได้อย่างถูกต้อง - เพิ่มประสิทธิภาพการกำหนดเวลาใหม่เมื่อแอปรีสตาร์ทหลังจากถูกบังคับปิด
- อนุญาตให้เรียกใช้
TestScheduler.setAllConstraintsMet(UUID)ก่อนหรือหลังจากจัดคิวWorkRequestที่ระบุ b/111238024
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- ตอนนี้
WorkManager.getInstance()จะมีคำอธิบายประกอบด้วย@NonNullแทน@Nullable - เปลี่ยนลายเซ็นของ
Data.getString()เพื่อไม่ให้ใช้ค่าเริ่มต้นอีกต่อไป (โดยปริยายคือnull) - ทำเครื่องหมายบางวิธีการว่าจำเป็นต้องใช้เฉพาะสำหรับการใช้งานภายในเป็น
@hideซึ่งรวมถึงตัวสร้างConstraints,Data.toByteArray()และData.fromByteArray(byte[])
19 กรกฎาคม 2018
การไปยังรายการต่างๆ
การไปยังส่วนต่างๆ 1.0.0-alpha04 และปลั๊กอิน Gradle ของ Safe Args ที่เกี่ยวข้องมีการเปลี่ยนแปลง API, การเปลี่ยนแปลงการทำงาน และการแก้ไขข้อบกพร่องหลายรายการ
การเปลี่ยนแปลง API / ลักษณะการทำงาน
- NavHostFragment จะตั้งค่า Fragment ปัจจุบันเป็นส่วนย่อยการนำทางหลักเสมอ เพื่อให้แน่ใจว่ามีการเรียกตัวจัดการส่วนย่อยย่อยก่อนที่จะเรียก NavController ภายนอก b/111345778
อาร์กิวเมนต์ที่ปลอดภัย
- การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ:
app:typeมีการเปลี่ยนแปลงเป็นapp:argTypeเพื่อหลีกเลี่ยงความขัดแย้งกับไลบรารีอื่นๆ เช่น ConstraintLayout 2.0.0-alpha1 b/111110548 - ตอนนี้ข้อความแสดงข้อผิดพลาดจาก Safe Args สามารถคลิกได้แล้ว b/111534438
- คลาส Args จะยืนยันว่าแอตทริบิวต์
NonNullนั้นไม่เป็นค่าว่างจริงๆ b/111451769 - มีการเพิ่มคำอธิบายประกอบ
NonNullไปยังคลาสที่สร้าง NavDirections และ Args เพิ่มเติม b/111455455 b/111455456
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาเกี่ยวกับปุ่มย้อนกลับของระบบหลังจากทำ Deep Link ไปยังปลายทางของส่วนย่อย b/111515685
12 กรกฎาคม 2018
การไปยังรายการต่างๆ
การไปยังส่วนต่างๆ 1.0.0-alpha03 และปลั๊กอิน Gradle ของ Safe Args ที่เกี่ยวข้องมีการเปลี่ยนแปลง API, การเปลี่ยนแปลงการทำงาน และการแก้ไขข้อบกพร่องหลายรายการ
การเปลี่ยนแปลง API / ลักษณะการทำงาน
- เพิ่มเมธอด NavigationUI.setupWithNavController สำหรับ Toolbar แล้ว b/109868820
- เพิ่มเมธอด NavigationUI.setupWithNavController สำหรับ CollapsingToolbarLayout ออก b/110887183
- ตอนนี้ popBackStack() แสดงผลเท็จเมื่อสแต็กด้านหลังว่างหรือเมื่อรหัสปลายทางที่ระบุไม่ได้อยู่ในสแต็กแบ็ก b/110893637
- ตอนนี้ FragmentNavigator จะละเว้นการดำเนินการนำทางหลังจากที่ FragmentManager ได้บันทึกสถานะแล้ว โดยหลีกเลี่ยงข้อยกเว้น "ไม่สามารถดำเนินการนี้หลังจาก onSaveInstanceState" b/110987825
อาร์กิวเมนต์ที่ปลอดภัย
- การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ: การทำงานของอักขระที่ไม่ใช่ตัวอักษรและตัวเลขคละกันและชื่ออาร์กิวเมนต์จะถูกแทนที่ด้วยตัวอักษรพิมพ์เล็ก-ใหญ่ในชื่อเมธอด NavDirections ที่เกี่ยวข้อง
- เช่น
DemoController.indexจะกลายเป็นsetDemoControllerIndexb/79995048 - เช่น
action_show_settingsจะกลายเป็นactionShowSettingsb/79642240
- เช่น
- การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ: โดยค่าเริ่มต้น อาร์กิวเมนต์จะถือว่าไม่ใช่ค่าว่าง หากต้องการอนุญาตให้ใช้ค่า Null ในอาร์กิวเมนต์สตริงและพาร์เซล ให้เพิ่ม
app:nullable="true"b/79642307 - ต่อไปนี้คุณจะใช้
app:type="long"กับ defaultValues ในรูปแบบ "123L" b/79563966 ได้แล้ว - ขณะนี้ระบบรองรับอาร์กิวเมนต์ที่แยกวิเคราะห์ได้แล้ว โดยใช้ชื่อคลาสที่มีคุณสมบัติครบถ้วนสำหรับ
app:typeค่าเริ่มต้นคือ"@null"b/79563966 เท่านั้น - ตอนนี้คลาส Args ใช้
equals()และhashCode()b/79642246 แล้ว - ตอนนี้ปลั๊กอิน Safe Args ใช้กับโปรเจ็กต์ไลบรารีได้แล้ว b/80036553
- ตอนนี้ปลั๊กอิน Safe Args ใช้กับโปรเจ็กต์ฟีเจอร์ได้แล้ว b/110011752
แก้ไขข้อบกพร่อง
- แก้ไขปัญหาเมื่อนำทางในระหว่างวิธีการในวงจรของ Fragment b/109916080
- แก้ไขปัญหาเมื่อนำทางผ่านกราฟที่ซ้อนกันหลายครั้ง b/110178671
- แก้ไขปัญหาเมื่อใช้
setPopUpToกับปลายทางแรกในกราฟ b/109909461 - แก้ปัญหาที่มีการส่งค่า
app:defaultValueทั้งหมดเป็นสตริง b/110710788 - aapt2 ที่มาพร้อมกับ Android Gradle Plugin 3.2 Beta 01 ได้เพิ่มกฎ Keep ให้กับแอตทริบิวต์
android:nameทุกรายการในไฟล์ XML การนำทาง b/79874119 - แก้ไขการรั่วไหลของหน่วยความจำเมื่อแทนที่ FragmentNavigator เริ่มต้น b/110900142
2 กรกฎาคม 2018
Lifecycle, Room และ Paging ใน AndroidX เวอร์ชัน 2.0.0-beta01
วงจร
แก้ไขข้อบกพร่อง
- แก้ไขกฎ Proguard ของ LifecycleObserver ให้เก็บไว้เฉพาะการใช้งานเท่านั้น ไม่ใช่อินเทอร์เฟซย่อย b/71389427
- แก้ไขกฎ Proguard ของ ViewModel เพื่ออนุญาตให้มีการปรับให้ยากต่อการอ่าน (Obfuscation) และการย่อ
ห้อง
การเปลี่ยนแปลง API / ลักษณะการทำงาน
- เพิ่ม
RoomDatabase.Builder.setQueryExecutor()เพื่อให้สามารถปรับแต่งตำแหน่งที่เรียกใช้การค้นหาได้ - เพิ่มการรองรับ RxJava2
Observable - การติดตั้งใช้งาน DAO และฐานข้อมูลที่สร้างขึ้นถือเป็นขั้นสุดท้ายแล้ว
แก้ไขข้อบกพร่อง
- ระบุชื่อคลาส/ฟิลด์ใน "ไม่พบ Getter สำหรับช่อง" ข้อผิดพลาด b/73334503
- แก้ไขความเข้ากันได้แบบย้อนหลังของ RoomOpenHelper กับ Room เวอร์ชันเก่า b/110197391
การแบ่งหน้า
แก้ไขข้อบกพร่อง
- เนื้อหาที่แก้ไขแล้วจะหายไปในบางกรณีที่มีการแทรกนำหน้า (ปิดใช้ตัวยึดตำแหน่ง, PositionalDataSource) b/80149146
- (เผยแพร่แล้วใน
1.0.1) แก้ไขข้อขัดข้องที่PagedListAdapterและAsyncPagedListDifferไม่ส่งสัญญาณเหตุการณ์การย้าย b/110711937
26 มิถุนายน 2018
การแบ่งหน้า
เผยแพร่หน้า 1.0.1 พร้อมการแก้ไขข้อบกพร่องเดียวใน runtime เราขอแนะนำให้ใช้ 1.0.1 เพื่อความเสถียร การแบ่งหน้า RxJava2 1.0.1 ก็เผยแพร่ได้เช่นกัน ซึ่งเหมือนกับ 1.0.0-rc1
แก้ไขข้อบกพร่อง
- แก้ไขข้อขัดข้องที่
PagedListAdapterและAsyncPagedListDifferไม่ส่งสัญญาณเหตุการณ์การย้าย b/110711937
WorkManager
ปล่อย WorkManager 1.0.0-alpha04 แล้ว
แก้ไขข้อบกพร่อง
ตอนนี้ระบบกำหนดเวลา
PeriodicWorkRequestใหม่อย่างถูกต้องเมื่อใช้การติดตั้งใช้งานที่อิงตามAlarmManagerแก้ไข ANR ที่อาจเกิดขึ้นเมื่อกำหนดเวลาใหม่ให้ผู้ปฏิบัติงานทั้งหมดหลังจากที่มีการบังคับให้หยุดหรือรีบูต b/110507716
เพิ่มคำอธิบายประกอบ Nullability ลงใน WorkManager API ต่างๆ b/110344065
บันทึกข้อยกเว้นที่ตรวจไม่พบซึ่งเกิดขึ้นระหว่างการทำงานของผู้ปฏิบัติงาน b/109900862
อนุญาตให้ย้ายข้อมูลฐานข้อมูลแบบทำลายได้ในกรณีที่คุณตัดสินใจย้อนกลับไปเป็น WorkManager เวอร์ชันเก่า b/74633270
แก้ไขข้อขัดข้องในการย้ายข้อมูลหากสร้างแท็กโดยนัยที่ซ้ำกัน นี่เป็นปัญหาซึ่งพบได้ไม่บ่อยนัก ซึ่งเกิดขึ้นเฉพาะเมื่อคุณใช้รูปแบบแท็กโดยนัยเดียวกันด้วยตัวเองเท่านั้น
19 มิถุนายน 2018
ห้อง
ปล่อยห้อง 1.1.1 แล้ว รุ่นนี้เหมือนกับห้อง 1.1.1-rc1
WorkManager
ปล่อย WorkManager 1.0.0-alpha03 แล้ว
แก้ไขข้อบกพร่อง
แก้ไขเงื่อนไขการแข่งขันในการใช้งานตาม
AlarmManagerb/80346526แก้ไขงานที่ซ้ำกันเมื่อใช้
JobSchedulerหลังจากรีบูตอุปกรณ์ตอนนี้งานที่มีทริกเกอร์ URI เนื้อหาจะยังคงอยู่ตลอดการรีบูต b/80234744
การอัปเดตเอกสาร b/109827628, b/109758949, b/80230748
แก้ไขข้อขัดข้องเมื่อจัดคิว
WorkRequestอีกครั้ง b/109572353แก้ไขคำเตือนคอมไพเลอร์ Kotlin เมื่อใช้ทรัพยากร Dependency
work-runtime-ktxขณะนี้ WorkManager ใช้
Roomเวอร์ชัน1.1.1-rc1
การเปลี่ยนแปลง API
เพิ่ม
getStatusesSync()ซึ่งเป็นเวอร์ชันซิงโครนัสของWorkContinuation.getStatuses()แล้วWorkerมีความสามารถในการแยกความแตกต่างระหว่างการยกเลิกที่เริ่มโดยผู้ใช้และการหยุดที่ระบบปฏิบัติการส่งคำขอชั่วคราวWorker.isStopped()จะส่งกลับtrueหากมีคำขอให้หยุดไม่ว่าในลักษณะใดก็ตามWorker.isCancelled()จะส่งคืนtrueเมื่องานถูกยกเลิกอย่างชัดแจ้ง b/79632247เพิ่มการรองรับ JobParameters#getNetwork() ใน API 28 เปิดเผยผ่าน
Worker.getNetwork()เพิ่ม
Configuration.Builder.setMaxSchedulerLimit(int maxSchedulerLimit)เพื่อให้คุณบังคับใช้จำนวนงานที่สามารถส่งไปยังJobSchedulerหรือAlarmManagerได้ การทำเช่นนี้จะป้องกันไม่ให้WorkManagerนำสล็อตJobSchedulerที่มีอยู่ทั้งหมดออกเพิ่ม
Configuration.setJobSchedulerJobIdRange(int minJobSchedulerId, int maxJobSchedulerId)แล้ว ซึ่งจะช่วยกำหนดช่วงของรหัสงานJobSchedulerที่ปลอดภัยเพื่อให้WorkManagerใช้ b/79996760Worker.getRunAttemptCount()จะแสดงผลจำนวนการเรียกใช้ปัจจุบันสำหรับWorkerที่ระบุ b/79716516WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork)ช่วยให้คุณจัดคิวPeriodicWorkRequestที่ไม่ซ้ำกันได้ b/79600647WorkManager.cancelAllWork()ยกเลิกWorkerทั้งหมด ไลบรารีที่ขึ้นอยู่กับWorkManagerจะค้นหาเวลาที่เรียกใช้เมธอดนี้ครั้งล่าสุดได้โดยใช้WorkManager.getLastCancelAllTimeMillis()เพื่อล้างข้อมูลสถานะภายในเพิ่มเติมเพิ่ม
WorkManager.pruneWork()เพื่อนำงานที่เสร็จสมบูรณ์แล้วออกจากฐานข้อมูลภายใน b/79950952, b/109710758
การเปลี่ยนแปลงลักษณะการทำงาน
- เพิ่มแท็กโดยนัยสําหรับ
WorkRequestทั้งหมด ซึ่งเป็นชื่อคลาสที่ตรงตามเกณฑ์ทั้งหมดสำหรับWorkerวิธีนี้ช่วยให้คุณนำWorkRequestออกได้โดยไม่ต้องใช้tagหรือเมื่อidไม่พร้อมใช้งาน b/109572351
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
เปลี่ยนชื่อ
Worker.WorkerResultเป็นWorker.Resultแล้วตอนนี้
Worker.onStoppedมีพารามิเตอร์isCancelledเพิ่มเติมซึ่งตั้งค่าเป็นtrueเมื่อยกเลิกWorkerอย่างชัดแจ้ง
7 มิถุนายน 2018
เปิดตัวการนำทาง 1.0.0-alpha02 แล้ว
การไปยังรายการต่างๆ
การเปลี่ยนแปลงลักษณะการทำงาน
ตอนนี้
FragmentNavigatorใช้setReorderingAllowed(true)b/109826220Navigation now URLDecodesอาร์กิวเมนต์ที่แยกวิเคราะห์จาก URL ของ Deep Link b/79982454
แก้ไขข้อบกพร่อง
แก้ไข
IllegalStateExceptionเมื่อเรียกใช้การไปยังส่วนต่างๆ จากวิธีวงจรของ Fragment b/79632233ตอนนี้การนำทางขึ้นอยู่กับไลบรารีการสนับสนุน 27.1.1 เพื่อแก้ไขภาพกะพริบเมื่อใช้ภาพเคลื่อนไหว b/80160903
แก้ไข
IllegalArgumentExceptionเมื่อใช้ defaultNavHost="true" เป็นส่วนย่อย b/79656847แก้ไข
StackOverflowErrorเมื่อใช้ NavDeepLinkBuilder b/109653065แก้ไข
IllegalArgumentExceptionเมื่อนำทางกลับไปยังกราฟที่ซ้อนกัน b/80453447แก้ไขปัญหาเกี่ยวกับ Fragment ที่ทับซ้อนกันเมื่อใช้
launchSingleTopb/79407969ขณะนี้การนำทางจะสร้างสแต็กย้อนกลับสังเคราะห์ที่ถูกต้องสำหรับกราฟที่ซ้อนกัน b/79734195
ตอนนี้ NavigationUI จะไฮไลต์รายการที่ถูกต้องเมื่อใช้กราฟที่ซ้อนกันเป็น
MenuItemb/109675998
การเปลี่ยนแปลง API
แอตทริบิวต์
clearTaskสำหรับการดำเนินการและ API ที่เชื่อมโยงในNavOptionsเลิกใช้งานแล้ว b/80338878แอตทริบิวต์
launchDocumentสำหรับการดำเนินการและ API ที่เชื่อมโยงในNavOptionsเลิกใช้งานแล้ว b/109806636
24 พฤษภาคม 2018
ปล่อย WorkManager 1.0.0-alpha02 แล้ว
WorkManager
แก้ไขข้อบกพร่อง
แก้ไข
NullPointerExceptionในState.isFinished()b/79550068แก้ไขปัญหาที่ทำให้มีการตั้งเวลา
Workerใหม่ในวันที่Application.onCreate()b/79660657แก้ไขปัญหาที่คุณอาจกำหนดเวลาทำงานมากกว่าที่ระบบปฏิบัติการอนุญาต b/79497378
ย้ายการล้างข้อมูล Wake Lock ที่เชื่อมโยงกับ
Workerไปยังชุดข้อความในเบื้องหลังแล้วตอนนี้การติดตั้งใช้งาน
AlarmManagerจะได้รับการล้างออกอย่างถูกต้องเมื่องานทั้งหมดที่รอดำเนินการเสร็จสมบูรณ์แล้วแก้ไขการค้นหา SQL แบบล้างข้อมูลซึ่งส่งผลต่อภาษาที่ไม่ใช่ภาษาอังกฤษ b/80065360
เพิ่มการรองรับ
floatในDatab/79443878ตอนนี้
Data.Builder.putAll()จะแสดงผลอินสแตนซ์ของBuilderb/79699162Javadoc และการแก้ไขเพิ่มเติมในเอกสารประกอบ b/79691663
การเปลี่ยนแปลง API
Workerจะตอบสนองต่อการหยุดทํางานได้ ใช้Worker.isStopped()เพื่อตรวจสอบว่าWorkerหยุดแล้วหรือไม่Worker.onStopped()จะใช้เพื่อดำเนินการทำความสะอาดขนาดเล็กได้Worker.getTags()API แสดงผลแท็กจำนวนSetที่เชื่อมโยงกับWorkerเพิ่มโอเวอร์โหลด
javax.time.Durationสำหรับ API ที่ใช้ระยะเวลาและTimeUnitวินาทีร่วมกัน รายการนี้ปกป้องโดย@RequiresApi(26)ส่วนขยาย
WorkManagerรายการได้ย้ายจากแพ็กเกจandroidx.work.ktxไปยังแพ็กเกจandroidx.workแล้ว ส่วนขยายเก่าเลิกใช้งานแล้วและจะถูกนำออกในเวอร์ชันในอนาคตConfiguration.withExecutor()เลิกใช้งานแล้ว โปรดใช้Configuration.setExecutor()แทน
16 พฤษภาคม 2018
ปล่อยแป้น RxJava2 1.0.0-rc1 และห้อง 1.1.1-rc1 แล้ว เราขอเรียนให้ทราบว่า
เราขอแนะนำให้ใช้ห้อง 1.1.1-rc1 แทน 1.1.0 หากคุณใช้การย้ายข้อมูล
ห้อง
แก้ไขข้อบกพร่องที่ห้องแชทไม่จัดการหลังการเริ่มต้นการย้ายข้อมูลอย่างถูกต้องb/79362399
การแบ่งหน้า
การแบ่งหน้า rxjava2 จะย้ายไปยังรุ่นที่เผยแพร่โดยไม่มีการเปลี่ยนแปลงใดๆ จากช่วงแรก
อัลฟ่า
8 พฤษภาคม 2018
Paging 1.0, Navigation และ WorkManager Alphas, ห้อง 1.1, AndroidX
ปล่อยการแบ่งหน้า 1.0.0 และห้อง 1.1.0 พร้อมกับ
พร้อมอัลฟ่าสำหรับคอมโพเนนต์สถาปัตยกรรมใหม่ 2 รายการ ได้แก่ Navigation และ WorkManager
การแบ่งหน้าและห้องไม่มีการเปลี่ยนแปลงตั้งแต่ตัวเลือกการเผยแพร่ล่าสุด
คลังใหม่: การนำทาง
การนำทางเป็นเฟรมเวิร์กสำหรับการสร้างในแอป
การนำทาง รุ่นเริ่มต้นนี้คือ 1.0.0-alpha01
ไลบรารีใหม่: WorkManager
WorkManager ทำให้การจัดตารางเวลาและการดำเนินการสำหรับ
รับประกันการทำงานเบื้องหลังที่คำนึงถึงข้อจำกัด รุ่นแรกเริ่มของ
1.0.0-alpha01
AndroidX
คอมโพเนนต์สถาปัตยกรรมจะย้ายไปเป็นส่วนหนึ่งของ AndroidX ซึ่งรวมถึงการอัปเดต
ชื่อแพ็กเกจ ชื่ออาร์ติแฟกต์ และทรัพยากร Dependency ในไลบรารี AndroidX อื่นๆ
เผยแพร่เหล่านี้ภายใต้เวอร์ชัน 2.0.0-alpha1 เพื่อใช้ร่วมกับ
ไลบรารี AndroidX
ส่วนขยาย Kotlin
ViewModel, ReactiveStreams และ Sqlite (เดิมเรียกว่าคอมโพเนนต์ "Database" ของ Room) ทั้งหมด มีการเพิ่มไลบรารีส่วนขยาย Kotlin เป็นส่วนหนึ่งของ AndroidX เวอร์ชันอัลฟ่า ใน นอกจากนี้ Navigation และ WorkManager ยังมีโมดูล -ktx แต่ละรายการ ดูโมดูลส่วนขยายได้ในการเพิ่มคอมโพเนนต์
2 พฤษภาคม 2018
- ห้อง 1.1.0 ผู้สมัครอิสระ
- ปล่อยห้อง
1.1.0-rc1แล้ว
แก้ไขข้อบกพร่อง
- Room ใช้งานได้กับ Kotlin
1.2.40แล้ว b/78328708
19 เมษายน 2018
ตัวเลือกการเผยแพร่การแบ่งหน้า
ปล่อยการแบ่งหน้า 1.0.0-rc1 และห้อง 1.1.0-beta3 แล้ว
การแบ่งหน้า
เราไม่มีปัญหาที่ทราบหรือฟีเจอร์ใหม่ใดๆ ตามกำหนดการสำหรับ
การแบ่งหน้ารุ่น 1.0.0 โปรดอัปเกรดโปรเจ็กต์เพื่อใช้ 1.0.0-rc1 และ
ช่วยเราทดสอบการต่อสู้เพื่อที่เราจะได้ให้บริการ 1.0.0 ได้อย่างมั่นคง
ไม่มีการเปลี่ยนแปลงในรุ่นนี้ แต่เหมือนกับ 1.0.0-beta1
ห้อง
แก้ไขข้อบกพร่อง
- แก้ไขข้อผิดพลาดในการคอมไพล์เมื่อ Kotlin POJO อ้างอิงเอนทิตีความสัมพันธ์ที่ กำหนดไว้ใน Java b/78199923
5 เมษายน 2018
ปล่อยห้อง 1.1.0-beta2, การแบ่งหน้า 1.0.0-beta1 และ Paging RxJava 1.0.0-alpha1 แล้ว
การแบ่งหน้าจะเป็นเวอร์ชันเบต้าเป็นระยะเวลาสั้นๆ ก่อนที่จะเปิดตัวผู้สมัคร
เราไม่ได้วางแผนเปลี่ยนแปลง API เพิ่มเติมสำหรับ Paging 1.0 และการเปลี่ยนแปลง API มีค่าสูงมาก
การสนับสนุน Alpha RxJava2 สำหรับการแบ่งหน้าเผยแพร่เป็นโมดูลที่ไม่บังคับแยกต่างหาก (android.arch.paging:rxjava2:1.0.0-alpha1)
และจะมีเวอร์ชันแยกกันชั่วคราวจนกว่าอุปกรณ์จะเสถียร
ไลบรารีใหม่นี้มี RxJava2 เป็นทางเลือกของ LivePagedListBuilder ซึ่งสามารถสร้าง
Observable และ Flowable วินาที ซึ่งใช้เวลา Scheduler วินาที แทนที่จะเป็น 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();
การแบ่งหน้า
ฟีเจอร์ใหม่
- เพิ่ม
RxPagedListBuilderผ่านอาร์ติแฟกต์android.arch.paging:rxjava2ใหม่แล้ว
การเปลี่ยนแปลง API
API มีการเปลี่ยนแปลงเพื่อชี้แจงบทบาทของผู้ดำเนินการในเครื่องมือสร้าง
เปลี่ยนชื่อ
setBackgroundThreadExecutor()เป็นsetFetchExecutor()(ในPagedList.BuilderและLivePagedListBuilder) แล้วเปลี่ยนชื่อ
setMainThreadExecutor()เป็นsetNotifyExecutor()(ในPagedList.Builder) แล้ว
แก้ไขสมาชิก
PagedList.mCallbacksรายให้เป็นแบบส่วนตัวแล้ว
แก้ไขข้อบกพร่อง
LivePagedListBuilderจะทริกเกอร์โหลดPagedListเริ่มต้นของตัวดำเนินการที่ระบุ แทนพูลเทรด IO ของคอมโพเนนต์ Archแก้ไขลักษณะการทำงานที่เป็นโมฆะใน Wrapper
DataSourceภายใน (ใช้เพื่อดำเนินการDataSource.mapและการโหลดPositionalDataSourceที่ปิดใช้ตัวยึดตำแหน่ง) b/77237534
ห้อง
แก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่องร้ายแรงในการใช้งาน Rx
SingleและMaybeของห้อง จะนำคำค้นหาดังกล่าวกลับมาใช้ใหม่ล่วงหน้า ซึ่งจะทำให้เกิดปัญหาหากคุณเพิ่มคำขอมากกว่า 1 รายการ ผู้สังเกตการณ์สำหรับSingleหรือMaybeที่ส่งกลับ b/76031240RoomDatabase.clearAllTables จะไม่
VACUUMฐานข้อมูลหากมีการเรียกใช้ ภายในธุรกรรม b/77235565
21 มีนาคม 2018
ปล่อยห้อง 1.1.0-beta1, การแบ่งหน้า 1.0.0-alpha7 และวงจร 1.1.1 แล้ว
ห้อง
การเปลี่ยนแปลง API
- จากความคิดเห็นเกี่ยวกับการตรวจสอบ API
@RawQueryไม่ยอมรับการส่งStringเป็นพารามิเตอร์การค้นหาอีกต่อไป คุณต้องใช้ SupportSQLiteQuery (ดู SimpleSQLiteQuery เพื่อสร้างอินสแตนซ์ของ SupportSQLiteQuery ที่มีการรองรับอาร์กิวเมนต์ได้อย่างง่ายดาย) - ตอนนี้เมธอด fallbackToDestructiveMigrationFrom ของ RoomDatabase.Builder ยอมรับ
vararg intแทนvararg Integerแล้ว
แก้ไขข้อบกพร่อง
ตอนนี้ RoomDatabase.clearAllTables คืนพื้นที่กลับไปยังระบบปฏิบัติการโดยการตั้งค่าจุดตรวจ WAL และ
VACUUMฐานข้อมูลตอนนี้
@RawQueryยอมรับ Pojo สำหรับพร็อพเพอร์ตี้observedEntitiesตราบใดที่ Pojo อ้างอิงถึงเอนทิตีอย่างน้อย 1 รายการผ่านช่องEmbeddedหรือRelationb/74041772การแบ่งหน้า: การติดตั้งใช้งานแหล่งข้อมูลของห้องจะจัดการทรัพยากร Dependency แบบหลายตารางได้อย่างถูกต้องแล้ว (เช่น ความสัมพันธ์และการรวม) ซึ่งก่อนหน้านี้จะทำให้ทริกเกอร์ผลลัพธ์ใหม่ไม่สำเร็จหรือคอมไพล์ไม่สำเร็จ b/74128314
วงจร
มีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น: android.arch.core.util.Function ถูกย้ายจาก arch:runtime ไปยัง arch:common วิธีนี้จะช่วยให้ใช้ได้โดยไม่ต้องพึ่งรันไทม์ เช่น ใน paging:common ด้านล่าง
lifecycle:common เป็นทรัพยากร Dependency ของ lifecycle:runtime การเปลี่ยนแปลงนี้จึงไม่มีผลกับ lifecycle:runtime โดยตรง แต่จะส่งผลต่อโมดูลที่ขึ้นอยู่กับ lifecycle:common โดยตรงเท่านั้น เหมือนกับการแบ่งหน้า
การแบ่งหน้า
เผยแพร่การแบ่งหน้า 1.0.0-alpha7 พร้อมกับวงจร 1.1.1 แล้ว เนื่องจากการแบ่งหน้า alpha7 ขึ้นอยู่กับการย้ายคลาส Function ที่กล่าวถึงข้างต้น คุณจึงต้องอัปเดตทรัพยากร Dependency ของ lifecycle:runtime เป็น android.arch.lifecycle:runtime:1.1.1
เราวางแผนว่าจะแบ่งหน้า alpha7 เป็นรุ่นสุดท้ายก่อนที่จะเปิดตัว Paging Hit เวอร์ชันเบต้า
การเปลี่ยนแปลง API
- ขณะนี้วัตถุ
DataSource.LoadParamsมีตัวสร้างสาธารณะ และวัตถุDataSource.LoadCallbackเป็นนามธรรมแล้ว การดำเนินการนี้จะเปิดใช้การรวมDataSourceหรือทดสอบDataSourceโดยตรงด้วยการจำลอง Callback b/72600421 - ผู้ทำแผนที่สำหรับแหล่งข้อมูลและ DataSource.factor
map(Function<IN,OUT>)ช่วยให้คุณเปลี่ยนรูปแบบ รวม หรือตกแต่งผลลัพธ์ที่โหลดโดยDataSourceได้mapByPage(<List<IN>,List<OUT>>)จะเปิดใช้ตัวเลือกเดียวกันสำหรับการประมวลผลแบบกลุ่ม (เช่น หากรายการที่โหลดจาก SQL ต้องค้นหาฐานข้อมูลแยกต่างหากเพิ่มเติม ก็จะทำเป็นกลุ่มได้)
- เพิ่ม
PagedList#getDataSource()ไว้เพื่อความสะดวก b/72611341 - นำคลาสที่เลิกใช้งานทั้งหมดออกจาก API แล้ว รวมถึงแพ็กเกจ
recyclerview.extensionsและLivePagedListProviderที่เหลืออยู่ - ระบบได้เปลี่ยน
DataSource.Factoryจากอินเทอร์เฟซเป็นคลาสนามธรรมเพื่อเปิดใช้ฟังก์ชันการทำงานของแผนที่แล้ว
แก้ไขข้อบกพร่อง
- เปลี่ยนช่างก่อสร้างให้เป็นขั้นสุดท้าย b/70848565
- ตอนนี้การใช้งานห้อง
DataSourceได้รับการแก้ไขแล้วเพื่อจัดการกับการค้นหาหลายตาราง การแก้ไขนี้อยู่ในห้อง 1.1.0-beta1 ดูด้านบน - แก้ไขข้อบกพร่องที่ระบบจะไม่เรียกใช้
BoundaryCallback.onItemAtEndLoadedสำหรับPositionalDataSourceหากเปิดใช้ตัวยึดตำแหน่งและ ขนาดโดยรวมจะเป็นผลคูณที่แน่นอนของขนาดหน้า
2 มีนาคม 2018
ปล่อยห้อง 1.1.0-alpha3 แล้ว นี่เป็นรุ่นอัลฟ่าที่วางแผนไว้ล่าสุดสำหรับ
ห้อง 1.1.0
การเปลี่ยนแปลง API
addObserverและremoveObserverของ ValidationTracker ตอนนี้เมธอดเป็นแบบซิงโครนัสและจำเป็นต้องเรียกใช้ในเธรดที่ไม่ใช่ UI ซึ่งจะช่วยป้องกันสภาวะการแข่งขันบางประการขณะสังเกตตารางมีเมธอด
clearAllTables()ใหม่ใน RoomDatabase ที่จะตัดสารบัญทั้งหมด b/63807999ตอนนี้
SupportSQLiteQueryมีเมธอดgetArgCount()ซึ่งแสดงผลตัวเลข พารามิเตอร์การค้นหา b/67038952
แก้ไขข้อบกพร่อง
ระบบรองรับ
@RawQueryสำหรับการค้นหาการแบ่งหน้าอย่างถูกต้องแล้ว b/72600425ขณะนี้ชื่อห้องแชทควรสร้าง
Daoคลาสเพื่อหลีกเลี่ยงการมีชื่อซ้ำกันเมื่อ อินเทอร์เฟซDaoอย่างน้อย 2 รายการเป็นคลาสภายในในแพ็กเกจเดียวกันและมี ชื่อเดียวกัน b/73536380ประเภทช่องทั่วไปใน
Pojoได้รับการแยกวิเคราะห์อย่างถูกต้องในฐานะสมาชิกของส่วนขยาย b/73534868พารามิเตอร์การค้นหาในอินเทอร์เฟซ
Daoที่รับช่วงมาจากทรัพยากร Dependency อาร์ติแฟกต์ได้รับการแยกวิเคราะห์อย่างเหมาะสมแล้ว b/68118746คำค้นหาที่สร้างขึ้นสำหรับ
@Relationหลีกชื่อช่องได้อย่างถูกต้อง b/70925483
27 กุมภาพันธ์ 2018
เผยแพร่หน้า 1.0.0-alpha6 พร้อมกับ Support Library รุ่น 27.1.0 แล้ว
ListAdapter และคลาสที่เกี่ยวข้อง 2-3 คลาสได้ย้ายจากไลบรารี Paging ไปยัง Recyclerview โดยตรง และมีการเปลี่ยนชื่ออีก 2-3 คลาสเพื่อให้ฟังก์ชันของบางคลาสชัดเจนขึ้น การแบ่งหน้ารุ่นอัลฟ่านี้น่าจะเป็นรายการสุดท้ายที่มีการเปลี่ยนแปลงช่วงพักโฆษณาของ API ที่สำคัญ
การเปลี่ยนแปลง API
- ชั้นเรียนที่ย้ายไปยัง recyclerview-v7:
ListAdapter
- เปลี่ยนชื่อชั้นเรียนและย้ายไปที่ recyclerview-v7:
ListAdapterHelper->AsyncListDifferListAdapterConfig->AsyncDifferConfigDiffCallback->DiffUtil.ItemCallback
- ชั้นเรียนที่เปลี่ยนชื่อภายในรันไทม์ของการแบ่งหน้า:
PagedListAdapterHelper->AsyncPagedListDiffer
ชั้นเรียนที่ย้ายจะมีประโยชน์ไปพร้อมกับ RecyclerView โดยไม่ขึ้นอยู่กับ Paging Library ซึ่งหมายความว่าสามารถใช้เวอร์ชันได้โดยไม่ต้องอัปเกรดเวอร์ชันอัลฟ่า และก็หมายความว่าแอปที่ใช้การแบ่งหน้าจะต้องอัปเกรดเป็นอัลฟ่า 6 และไลบรารีการสนับสนุน 27.1.0 ในเวลาเดียวกัน
** คำแนะนำในการย้ายข้อมูลสำหรับ Paging Alpha6: **
- อัปเดตทรัพยากร Dependency ของการแบ่งหน้าและ Recyclerview เป็น
android.arch.paging:runtime:1.0.0-alpha6และcom.android.support:recyclerview-v7:27.1.0- ซึ่งจะต้องดำเนินการพร้อมกัน เนื่องจาก ListAdapter ถูกย้ายจาก Paging ไปยัง RecyclerView
- อัปเดตข้อมูลอ้างอิงของ
ListAdapterHelperกับAsyncListDiffer- นำ
getItem(index)/getItemCount()ออกแล้ว เพื่อเปลี่ยนไปใช้รูปแบบการเรียกgetCurrentList().getItem(index)และgetCurrentList().size()ซึ่งชัดเจนกว่า
- นำ
- อัปเดตข้อมูลอ้างอิงของ
ListAdapterConfigกับAsyncDifferConfig - อัปเดตข้อมูลอ้างอิงของ
DiffCallbackกับDiffUtil.IttemCallback - อัปเดตข้อมูลอ้างอิงของ
PagedListAdapterHelperกับAsyncPagedListDiffer - อัปเดตการอ้างอิงของ
setList()เป็นsubmitList()- เปลี่ยนชื่อเพื่อชี้แจงลักษณะอะซิงโครนัสของความแตกต่างของรายการ
แก้ไขข้อบกพร่อง
- แก้ไขการส่งตำแหน่งเริ่มต้นที่ไม่ถูกต้องไปยังโหลดเริ่มต้นเมื่อตัวยึดตำแหน่ง ปิดใช้อยู่ b/73513780
15 กุมภาพันธ์ 2018
ปล่อยห้อง 1.1.0-alpha2 แล้ว
ฟีเจอร์ใหม่
Room รองรับการเปิดฐานข้อมูลในโหมดเขียนล่วงหน้าแล้ว ในโหมดนี้ การเขียนของคุณจะไม่บล็อกการค้นหาที่อ่านแล้วอีกต่อไป แม้ว่า ก็จะใช้หน่วยความจำมากขึ้น (เนื่องจากมีการเชื่อมต่อหลายครั้ง) โหมดนี้มักจะใช้ ได้เร็วขึ้น โดยค่าเริ่มต้น ห้องจะใช้ WAL หากอุปกรณ์มีรุ่น
API 16ขึ้นไปและ ไม่ใช่อุปกรณ์ที่มีหน่วยความจำต่ำ คุณสามารถควบคุมการทำงานนี้โดยใช้setJournalMode()ในRoomDatabase.Builderb/67757002การสนับสนุน Guava: ขณะนี้ห้องแชทรองรับ Guava ที่ส่งคืนแล้ว
Optional<T>หรือListenableFuture<T>ในDAOคำค้นหา หากต้องการใช้ListenableFuture<T>คุณต้องนำเข้าอาร์ติแฟกต์guavaรายการจากห้องแชท (android.arch.persistence.room:guava:1.1.0-alpha2)ขณะนี้ห้องแชทรองรับการแสดงผล
java.util.Optional<T>จากการค้นหาDAOรายการตอนนี้วิธีอินเทอร์เฟซที่มีการติดตั้งใช้งานเริ่มต้นได้รับการสนับสนุนแล้วใน
@TransactionเมธอดในDAOคลาส วิธีนี้ใช้ได้กับทั้งJava 8และKotlinb/72416735
แก้ไขข้อบกพร่อง
เครื่องมือสร้างที่มี
@Relationจะไม่ทำให้เกิดข้อผิดพลาดในการคอมไพล์ หากมี ตัวสร้างอื่นที่สามารถใช้ได้ b/72884434กำหนดเป็นอักขระหลีกชื่อตารางด้วย
'ใน@Queryเมธอดได้แล้ว สำหรับเครื่องมือติดตามการใช้งานที่ไม่ถูกต้อง b/72366965ตอนนี้ Room ใช้คำอธิบายประกอบของ Kotlin
@Metadataในการอ่านโครงสร้างของชั้นเรียน ขณะประมวลผลคำอธิบายประกอบ ซึ่งหมายความว่าแม้ว่า pojo จะสืบทอดมาจาก Dependency ได้ ชื่อพารามิเตอร์ตัวสร้างสามารถอ่านได้อย่างถูกต้อง b/67181813ปัญหาเรื่องการค้นหาเส้นทางการย้ายข้อมูลที่มีการดาวน์เกรดได้รับการแก้ไขแล้ว b/72153525
ขณะนี้มีการจัดการประเภทคอลัมน์ที่ไม่ใช่ค่าเริ่มต้นอย่างเหมาะสมเมื่อย้ายข้อมูลจาก ฐานข้อมูลที่มีอยู่ไปยังห้องแชท b/71953987
Room จัดการฟิลด์
boolean?ที่ใช้งานอยู่ในชั้นเรียน Kotlin อย่างถูกต้องแล้ว b/72786402
22 มกราคม 2018
ปล่อยวงจร 1.1.0, ห้อง 1.1.0-alpha1 และการแบ่งหน้า 1.0.0-alpha5 แล้ว
วงจร 1.1.0
การเปลี่ยนแปลงแพ็กเกจ
ทรัพยากร Dependency ใหม่ที่มีขนาดเล็กกว่ามากพร้อมใช้งานแล้ว
android.arch.lifecycle:livedata:1.1.0android.arch.lifecycle:viewmodel:1.1.0
การเปลี่ยนแปลง API
LifecycleActivityและLifecycleFragmentที่เลิกใช้งานแล้วได้นำออกแล้ว โปรดใช้FragmentActivity,AppCompatActivityหรือรองรับFragment- เพิ่มคำอธิบายประกอบ
@NonNullรายการในViewModelProvidersและViewModelStoresแล้ว - ตัวสร้าง
ViewModelProvidersเลิกใช้งานแล้ว โปรดใช้เมธอดแบบคงที่โดยตรง ViewModelProviders.DefaultFactoryเลิกใช้งานแล้ว โปรดใช้ViewModelProvider.AndroidViewModelFactory- เพิ่มเมธอด
ViewModelProvider.AndroidViewModelFactory.getInstance(Application)แบบคงที่เพื่อเรียกข้อมูลแล้วFactoryแบบคงที่ที่เหมาะสำหรับการสร้างอินสแตนซ์ViewModelและAndroidViewModel
ห้อง 1.1.0-alpha1
ฟีเจอร์ใหม่
RawQuery: API ใหม่นี้ช่วยให้@Daoวิธีรับ SQL เป็นพารามิเตอร์การค้นหาได้ b/62103290, b/71458963fallBackToDestructiveMigrationsFrom: API ใหม่ในRoomDatabase.Builderนี้ช่วยให้ การควบคุมที่ละเอียดขึ้นว่าการย้ายข้อมูลของสคีมาเวอร์ชันใดเริ่มต้นจะก่อให้เกิดความเสียหาย อนุญาต (เทียบกับ fallbackToDestructiveMigration) b/64989640- ขณะนี้ Room รองรับเฉพาะ Paging API รุ่นใหม่ (อัลฟ่า-4+) และไม่รองรับ API ที่เลิกใช้งานแล้ว
LivePagedListProviderหากต้องการใช้ห้องแชทอัลฟ่าแบบใหม่ คุณจะต้องใช้การแบ่งหน้าalpha-4ขึ้นไป และเปลี่ยนจากLivePagedListProviderเป็นLivePagedListBuilderหากยังไม่ได้ดำเนินการ
แก้ไขข้อบกพร่อง
- ปรับปรุงการรองรับประเภท Kotlin Kapt b/69164099
- ลำดับของช่องไม่ทำให้สคีมาเป็นโมฆะอีกต่อไป b/64290754
การแบ่งหน้า 1.0.0-alpha5
แก้ไขข้อบกพร่อง
- แก้ไขการโหลดหน้าเว็บเมื่อปิดใช้ตัวยึดตำแหน่ง b/70573345
- การบันทึกเพิ่มเติมสำหรับการติดตามข้อบกพร่อง IllegalArgumentException b/70360195 (และการแก้ไขจากฝั่งห้องที่ไม่แน่นอน)
- การแก้ไขโค้ดตัวอย่าง Javadoc b/70411933, b/71467637
11 ธันวาคม 2017
ปล่อยการแบ่งหน้า alpha4-1 แล้ว นี่เป็นรุ่นที่มีการแก้ไขข้อบกพร่องเล็กน้อยสำหรับ Paging Alpha 4
แก้ไขข้อบกพร่อง
- อย่าตรวจสอบพารามิเตอร์ Callback เพื่อหาแหล่งข้อมูลที่ไม่ถูกต้อง b/70353706 b/70360195
7 ธันวาคม 2017
เผยแพร่หน้า alpha4 แล้ว โดยมีการเปลี่ยนแปลงและการเพิ่มที่สำคัญ ซึ่งส่วนใหญ่
การกำหนดเป้าหมายเครือข่าย และกรณีการใช้งานของเครือข่าย + ฐานข้อมูล
การเปลี่ยนแปลง API
ตอนนี้
DataSourceเป็น API แบบไม่พร้อมกันเพื่อให้การแบ่งหน้าจากเครือข่ายโดยตรงง่ายขึ้น ดังนี้- จุดแรกเข้าเดียวสำหรับขนาดและข้อมูลเริ่มต้น
- รองรับการลองเครือข่ายอีกครั้งโดยกด Callback ค้างไว้และส่งในภายหลัง
- Callback ของ Threadsafe ช่วยให้โหลดแบบไม่พร้อมกันสำหรับการสร้างเครือข่ายเดียวได้
สำรองข้อมูล
PagedListในชุดข้อความ UI - ลักษณะการทำงานของข้อผิดพลาดที่ชัดเจนเกี่ยวกับพารามิเตอร์การโหลดเริ่มต้น
TiledDataSourceได้เปลี่ยนชื่อเป็นPositionalDataSourceเพื่อให้สอดคล้องกับ การจัดทำดัชนีตามตำแหน่ง และข้อเท็จจริงที่ว่า ไม่ได้เรียงต่อกันเมื่อตัวยึดตำแหน่ง ปิดใช้อยู่เพิ่ม
PageKeyedDataSourceเพื่อรองรับโทเค็นถัดไป/ก่อนหน้าที่ฝังใน การโหลดหน้าเว็บในเครือข่ายKeyedDataSourceเปลี่ยนชื่อเป็นItemKeyedDataSourceเพื่อ ความแตกต่างนั้นชัดเจนแทนที่
LivePagedListBuilderและDataSource.FactoryLivePagedListProviderเครื่องมือสร้างนั้นมีความสามารถแบบเดียวกัน การกำหนดค่าเองและค่าเริ่มต้นที่ง่ายขึ้น โรงงานอนุญาตให้สร้างDataSourceให้ยังคงเป็นอิสระจากLiveDataเพิ่ม
PagedList.BoundaryCallbackสำหรับ Use Case ของฐานข้อมูลและเครือข่ายแล้วเครื่องมือสร้าง
PagedList.Builderใช้เวลาDataSource+PagedList.Configในขณะนี้ ซึ่งคล้ายกับLivePagedListBuilderและอนุญาตโอเปอเรเตอร์เพชรใน ภาษา Java หรือประเภทที่สรุปใน Kotlinเพิ่ม
PagedList.getConfig()แล้ว และPagedList.Configมีสมาชิกแบบสาธารณะแล้ว พร็อพเพอร์ตี้KeyedDataSource.loadBefore()ไม่คาดหวังผลลัพธ์แบบย้อนกลับแล้วเพิ่ม
PagedListAdapter.onCurrentListChanged()เพื่อฟังข้อมูลอัปเดตที่มี กำลังแสดง PagedList
แก้ไขข้อบกพร่อง
- แก้ไข IndexOutOfBoundsException ใน PagedListAdapter(Helper) b/67883658 แล้ว
1.0.0 - 6 พฤศจิกายน 2017
ขณะนี้คอมโพเนนต์หลักทั้งหมด (ยกเว้นการแบ่งหน้า) เป็น 1.0.0 แล้ว เหมือนกันทุกประการ
เผยแพร่เป็น rc1 ยกเว้นการเปลี่ยนแปลง 1 รายการในไลบรารี reactivestreams
แก้ไขข้อบกพร่อง
LiveDataReactiveStreamsได้ติดตั้งใช้งานอย่างถูกต้องแล้วในขณะนี้ ตามข้อกำหนดของสตรีมเชิงรับ b/67999342
ผู้สมัครเปิดตัว - 18 ตุลาคม 2017
ตอนนี้อาร์ติแฟกต์หลักทั้งหมด (ยกเว้น Paging) เป็น 1.0.0-rc1 แล้ว
เราไม่มีปัญหาที่ทราบหรือฟีเจอร์ใหม่ใดๆ ตามกำหนดการสำหรับ
รุ่น 1.0.0 โปรดอัปเกรดโปรเจ็กต์ของคุณเพื่อใช้ 1.0.0-rc1 และช่วยเรา
เพื่อที่จะได้ทดสอบสมรรถนะสูง
เพื่อที่เราจะได้ส่ง 1.0.0 ให้แข็งแรง
การเปลี่ยนแปลงลักษณะการทำงาน
- ในรุ่นนี้ระบบจะส่ง
Lifecycle.Event#ON_STOPเมื่อ เรียกonSaveInstanceStateแล้ว (ก่อนหน้านี้ อุปกรณ์เพิ่งทำเครื่องหมายเป็นCREATEDโดยไม่ต้องส่งON_STOP) อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ใน เอกสารประกอบของอายุการใช้งาน
แก้ไขข้อบกพร่อง
ห้อง:
- ตอนนี้ห้องแชทใช้อาร์ติแฟกต์ xerial ล่าสุดที่แก้ไข
OutOfMemoryแล้ว ระหว่างการคอมไพล์ b/62473121 - ตอนนี้คุณสามารถใส่คำอธิบายประกอบด้วยเมธอด
Queryด้วย@Transactionได้แล้ว ดูรายละเอียดในเอกสารอ้างอิง@Transactionb/65112315 - นำชั้นเรียน
StringUtilรายการในห้องออกจากสาธารณะแล้ว API (ไม่ได้มีเจตนาให้เป็น API สาธารณะ)
- ตอนนี้ห้องแชทใช้อาร์ติแฟกต์ xerial ล่าสุดที่แก้ไข
วงจร:
LiveDataทำงานได้อย่างถูกต้องเมื่อกิจกรรมครอบคลุมเพียงบางส่วนใน API < 24. b/65665621ขณะนี้มีการเรียกเมธอด
OnLifecycleEventในชั้นเรียนผู้ปกครองอย่างถูกต้อง หรือ และจะพิมพ์คำเตือนในระหว่างการรวบรวมหากไม่สามารถพิมพ์ได้ b/63474615Lifecycle จะคง
WeakReferenceกลับไปยัง LifecycleOwner เพื่อหลีกเลี่ยงการรั่วไหลของข้อมูล LifecycleOwner หากเก็บ Lifecycle ไว้ในหน่วยความจำนานขึ้น (นี่เป็นเพียงข้อควรระวัง คุณยังคงต้องระวังที่จะไม่ เปิดเผยLifecycle)
9 ตุลาคม 2017
ปล่อยการแบ่งหน้า alpha-3 แล้ว ซึ่งทำให้เข้ากันได้กับ beta 2
Lifecycles และ Room
แก้ไขข้อบกพร่อง
- ปรับปรุงเอกสารประกอบเกี่ยวกับการแบ่งหน้า
5 ตุลาคม 2017
ตอนนี้อาร์ติแฟกต์หลักทั้งหมด (ยกเว้น Paging) เป็น beta 2 แล้ว
ไม่มีการแบ่งหน้าเวอร์ชันใหม่ในรุ่นนี้
แก้ไขข้อบกพร่อง
วงจร:
LiveDataReactiveStreamsยกเลิกการสมัครรับข่าวสารจากแหล่งที่มาอย่างถูกต้องแล้ว ผู้เผยแพร่โฆษณาเมื่อLiveDataไม่ได้ทำงานอยู่ b/62609183- ระบบจะเผยแพร่เหตุการณ์สำคัญในวงจรไปยังชั้นเรียนหลักอย่างเหมาะสมเมื่อชั้นเรียนหลักมาจากโมดูลอื่น b/63474615
- LiveData จัดการผู้สังเกตการณ์อย่างเหมาะสมเมื่อยกเลิกการสมัครในระหว่าง การสร้างการสมัครรับข้อมูล b/66337741
FullLifecycleObserverสำหรับอาร์ติแฟกต์ภาษา Java 8 พร้อมใช้งานในโครงสร้างทรัพยากร Dependency แล้ว b/66525578สำหรับ Proguard โปรดเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ Proguard (ไม่จำเป็นต้องดำเนินการนี้หากจัดส่ง 1.0.0)
-keep class * implements android.arch.lifecycle.GeneratedAdapter {<init>(...);}
ห้อง:
- ตอนนี้ห้องแชทพิมพ์ข้อผิดพลาดขณะคอมไพล์เมื่อ Pojo แสดงผลใน
เมธอด
@Queryมีฟิลด์@NonNullที่ไม่ตรงกับ ในการตอบกลับข้อความค้นหา หากช่องคือ@Nullableให้ระบุว่า "ห้องแชทเท่านั้น" พิมพ์คำเตือน b/67115337 - ขณะนี้ Room จะตรวจสอบดัชนีในระบบปฏิบัติการเวอร์ชันใหม่แล้ว b/63132683
- ห้องแชทจะเลือกตัวสร้างที่ไม่มีอาร์กิวเมนต์โดยค่าเริ่มต้นหากมีหลายรายการ ที่ตรงกันใน Pojo b/67353427
- คีย์หลักที่มีคอลัมน์เดียวสามารถเป็น
Nullableได้หากเป็นคีย์IntegerหรือLongb/67086876 - เครื่องมือติดตามการใช้ไม่ได้รองรับการกลับเข้ามาใหม่ในโหมดทดสอบอย่างเหมาะสม b/65471397
- ตอนนี้ห้องแชทจะตรวจหาอักขระที่ไม่ถูกต้องในคอลัมน์และตาราง
ชื่อขณะคอมไพล์ (อักขระไม่ถูกต้อง:
`,") b/64749111
- ตอนนี้ห้องแชทพิมพ์ข้อผิดพลาดขณะคอมไพล์เมื่อ Pojo แสดงผลใน
เมธอด
21 กันยายน 2017
ในรุ่นนี้ โมดูลคอมโพเนนต์สถาปัตยกรรมทั้งหมดจะมีการเข้าถึงอย่างน้อย beta 1
(ยกเว้นไลบรารีการสร้างหน้าเว็บใหม่ซึ่งก็คือ alpha 2)
เราไม่ได้วางแผนเปลี่ยนแปลง API ใดๆ เพิ่มเติม การเปลี่ยนแปลงที่ไม่ได้วางแผนไว้อาจเกิดขึ้น แต่
แถบสำหรับการเปลี่ยนแปลง API ก่อนเวอร์ชันเสถียรของ 1.0.0 สูงมากและมีแนวโน้มว่าจะไม่เกิดขึ้น
- กิจกรรมเกี่ยวกับวงจรและ ระบบจะนำ LifecycleFragment ออกก่อนวันที่
1.0.0เวอร์ชันเสถียร โฆษณาเหล่านี้ ไม่จำเป็นเมื่อใช้ไลบรารีการสนับสนุน26.1.0ขึ้นไป
ระยะเบต้าจะกำหนดให้มีระยะเวลาสั้นมาก ซึ่งต่างจากระยะอัลฟ่า
การเปลี่ยนแปลงเวอร์ชัน
- ส่วนขยายและห้องแชทของ Lifecycle เปลี่ยนเป็น
beta 1แล้ว - ขณะนี้การแบ่งหน้าคือ
alpha 2 - ไม่มีการเปลี่ยนแปลงในวงจร (รันไทม์, ทั่วไป) และ Arch Core (ทั่วไป) อาร์ติแฟกต์ทั้ง 2 รายการนี้
เป็นเวอร์ชัน
1.0.0ตั้งแต่วันที่ 13 กันยายน
อาร์ติแฟกต์ใหม่
ตอนนี้วงจรมีอาร์ติแฟกต์ใหม่ที่ชื่อว่า
common-java8อาร์ติแฟกต์นี้มีแอตทริบิวต์ อินเทอร์เฟซใหม่ชื่อ DefaultLifecycleObserver ไหน มีการใช้งานเริ่มต้นสำหรับวิธีอายุการใช้งานทั้งหมด หากคุณกำลังใช้ภาษา Java 8 คุณควรใช้อาร์ติแฟกต์นี้มากกว่าคำอธิบายประกอบ- เนื่องจากข้อบกพร่องใน
beta1คุณต้องเพิ่มทรัพยากร Dependency อย่างชัดเจนในandroid.arch.lifecycle:common:1.0.1เพื่อใช้อาร์ติแฟกต์common-java8ใหม่ ปัญหานี้จะได้รับการแก้ไขในbeta2
- เนื่องจากข้อบกพร่องใน
การเปลี่ยนแปลงแพ็กเกจ
- ย้าย
android.arch.persistence.room.dbไปที่android.arch.persistence.dbแล้ว android.arch.persistence.room.db-implถูกย้ายและเปลี่ยนชื่อเป็นandroid.arch.persistence.db-frameworkแล้ว
อาร์ติแฟกต์ทั้ง 2 รายการนี้เป็นทรัพยากร Dependency ใน Room อยู่แล้ว เว้นแต่ว่าคุณจะใช้อาร์ติแฟกต์โดยตรง คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ ในไฟล์บิลด์
การเปลี่ยนแปลง API
ห้อง:
- ตอนนี้คำอธิบายประกอบ @ColumnInfo รองรับการตั้งค่าการตรวจเทียบในคอลัมน์แล้ว b/62007004
- ตอนนี้ระบบจะไม่สนใจช่อง
transientตามค่าเริ่มต้น เว้นแต่จะมีคำอธิบายประกอบ@ColumnInfo@Embeddedหรือ@Relationb/62600692 - คีย์หลักต้องมีคำอธิบายประกอบด้วย
@NonNullเว้นแต่จะสร้างขึ้นโดยอัตโนมัติ b/64292391- อาจต้องย้ายข้อมูลสคีมาเพื่อทำการเปลี่ยนแปลงนี้ ขออภัยในความไม่สะดวก
- เพิ่มคำอธิบายประกอบตามความสะดวกใหม่ (@Transaction) ซึ่ง
ลบล้างเมธอด
DAOและเรียกใช้ภายในธุรกรรม
รองรับฐานข้อมูล SQLite:
- การเปลี่ยนแปลง API ในการกำหนดค่าฐานข้อมูล b/65349673 b/65499876
การแบ่งหน้า:
- ปรับปรุงเอกสารการแบ่งหน้าให้มีตัวอย่างและคำอธิบายประกอบชุดข้อความมากขึ้น
แก้ไขข้อบกพร่อง
- ห้อง:
- สตริงหลายบรรทัด Kotlin ในเมธอด
@Queryได้รับการจัดการอย่างเหมาะสม b/65809374
- สตริงหลายบรรทัด Kotlin ในเมธอด
- การแบ่งหน้า:
- อาร์ติแฟกต์การแบ่งหน้าไม่ได้ขึ้นอยู่กับ junit แล้ว b/65690261
1.0.0 Alpha 9-1 - 13 กันยายน 2017
นี่เป็นรุ่นสำคัญที่มีอาร์ติแฟกต์วงจรหลัก (รันไทม์, ทั่วไป) และ Arc Core (ทั่วไป)
ไปถึงเวอร์ชันเสถียร 1.0.0
นอกจากการเปลี่ยนแปลงนี้แล้ว Support Library 26.1.0 จะขึ้นอยู่กับไลบรารีเหล่านี้ ทั้ง AppCompatActivity และส่วนย่อยการสนับสนุน ให้ใช้อินเทอร์เฟซ LifecycleOwner ได้แล้ว
รุ่นนี้ยังขึ้นอยู่กับไลบรารีการสนับสนุน 26.1.0 เพื่อใช้ประโยชน์จากการผสานรวมใหม่ด้วย
คลังใหม่: การแบ่งหน้า
และรุ่นนี้ยังมีไลบรารีใหม่ที่ชื่อว่าการแบ่งหน้า ซึ่งช่วยให้โหลดเนื้อหาขนาดใหญ่ได้อย่างง่ายดาย
ชุดข้อมูลลงใน RecyclerView แบ่งเป็นส่วนๆ เมื่อจำเป็น การแบ่งหน้าเผยแพร่เป็น alpha1
และจะมีช่วงเปิดตัวของตัวเอง
การเปลี่ยนแปลง API
- เราเลิกใช้งานคลาสต่อไปนี้แล้วและจะนำออกในรุ่นต่อๆ ไป
แก้ไขข้อบกพร่อง
ตอนนี้ชั้นเรียนที่สร้างจะมีคำอธิบายประกอบด้วย
@Generatedหากแอปมีคำอธิบายประกอบใน classpath b/35754819แก้ไขข้อบกพร่องในการเปรียบเทียบผู้สังเกตการณ์ของ MediatorLiveData b/64413274
รองรับการค้นหา SQLite
WITHด้วย [LiveData] แล้ว [การอ้างอิง LiveData] b/62510164แก้ไขข้อบกพร่องที่ invalidationTracker ไม่ส่งรายการที่ถูกต้องหากมีตารางมากกว่า 1 ตาราง สังเกตได้ b/65099281
แก้ไขข้อบกพร่องที่ห้องแชทจะสร้างไฟล์ที่แตกต่างกันใน Windows b/64470691
รองรับ LifecycleObserver ในแพ็กเกจรูทแล้ว b/62310817
1.0.0 Alpha 9 - 16 สิงหาคม 2017
แก้ไขข้อบกพร่อง
- แก้ไขข้อบกพร่องใน LiveData โดยไม่สนใจ Observer ที่สองเมื่อนำรายการแรกออกจากเมธอด
onChangedb/64285805
1.0.0 Alpha 8 - 1 สิงหาคม 2017
การเปลี่ยนแปลงลักษณะการทำงาน
- เพิ่มข้อจำกัด
NOT NULLสำหรับคอลัมน์ประเภทพื้นฐานหรือคอลัมน์ มีคำอธิบายประกอบ NonNull ซึ่งจะเปลี่ยนโครงสร้างของ ดังนั้นหากคุณใช้คอมโพเนนต์สถาปัตยกรรมอัลฟ่า 7 หรือก่อนหน้าอยู่แล้ว คุณต้องใช้การย้ายข้อมูลหากต้องการเก็บข้อมูลไว้ หรือใช้fallbackToDestructiveMigration()ในเครื่องมือสร้าง b/62007004
การเปลี่ยนแปลง API
- SupportSQLiteProgram ขยาย AutoCloseable แล้ว b/63131997
1.0.0 Alpha 7 - 26 กรกฎาคม 2017
แก้ไขข้อบกพร่อง
แก้ไขข้อบกพร่องร้ายแรงในเมธอด LifecycleRegistry
removeObserverซึ่งทําให้การอ่าน LifecycleObserver เสียหายการแก้ไข Legalationเครื่องมือติดตาม สำหรับฐานข้อมูลที่กำหนดเอง b/63162311
1.0.0 Alpha 6 - 25 กรกฎาคม 2017
การเปลี่ยนแปลงลักษณะการทำงาน
ลำดับการเรียก LifecycleObserver มีการเปลี่ยนแปลง ก่อนหน้านี้ผู้สังเกตการณ์จะถูกเรียกทุกครั้งตามลำดับการเพิ่ม: หากเพิ่ม
observer1ก่อนobserver2เหตุการณ์จะได้รับON_CREATEและเหตุการณ์อื่นๆ ทั้งหมดก่อนobserver2ซึ่งไม่เป็นความจริงอีกต่อไปสำหรับเหตุการณ์การทำลายล้าง แต่จะถูกเรียกผู้สังเกตการณ์กลับมาตามลำดับของการบวก ดังนั้นลักษณะการทำงานปัจจุบันคือ หากเพิ่มobserver1ก่อนobserver2ระบบจะส่งON_CREATEไปยังobserver1ก่อน จากนั้นจะส่งไปยังobserver2(เหมือนกันกับสำหรับON_STARTและON_RESUME) แต่จะส่งเหตุการณ์ON_PAUSEไปยังobserver2ก่อน จากนั้นจะส่งไปที่observer1เท่านั้น (เหมือนกันสำหรับON_STOPและON_DESTROY)ห้องแชทจะมีข้อยกเว้นหากไม่มีการย้ายข้อมูล ก่อนหน้านี้ห้องแชทจะล้างฐานข้อมูล แต่ตอนนี้ขัดข้อง นักพัฒนาแอปจะเลือกใช้การล้างข้อมูลได้โดยการเรียกใช้ Builder API b/63872392
การเปลี่ยนแปลง API
เพิ่มเมธอด
fallbackToDestructiveMigration()ลงในRoomDatabase.Builderแล้ว ล้างฐานข้อมูลถ้าการย้ายข้อมูลหายไป b/63872392ตอนนี้คอมโพเนนต์สถาปัตยกรรมขึ้นอยู่กับไลบรารีการสนับสนุน 26.0.0 แล้ว
แก้ไขข้อบกพร่อง
แก้ไขการจัดการ @Relation ที่ฝังอยู่ใน @Embedded b/63736065
การย้ายข้อมูลการทดสอบแบบคงที่สำหรับตารางที่มีคีย์หลักที่เพิ่มขึ้นโดยอัตโนมัติ b/63393618
ตอนนี้ @Query ที่เรียกใช้ "ลบ" หรือ "อัปเดตคำค้นหา" จะได้รับอาร์กิวเมนต์อย่างถูกต้อง b/63872538
ตอนนี้ ViewModels ได้รับการเก็บรักษาไว้ เมื่อส่วนย่อยของเจ้าของอยู่ใน Backstack และการเปลี่ยนแปลงการกำหนดค่าเกิดขึ้น 2 ครั้ง b/38445801
1.0.0 Alpha 5 - 18 กรกฎาคม 2017
การเปลี่ยนแปลง API
เพิ่มเมธอด Callback ใหม่ลงใน
RoomDatabase.Builderเพื่อสังเกตเมื่อมีการสร้างหรือเปิดฐานข้อมูล b/62699324ตอนนี้ @Query อาจแสดงผล RxJava
MaybeหรือSingleb/62231019
คุณต้องใช้อาร์ติแฟกต์ android.arch.persistence.room:rxjava2 เพื่อเพิ่มการรองรับ RxJava ไปยังห้องแชท
แก้ไขข้อบกพร่อง
แก้ไขการค้นหา
@Deleteรายการโดยไม่มีพารามิเตอร์ใดๆ b/63608092การตรวจหาประเภทห้องแบบตายตัวสำหรับผู้เริ่มต้นและผู้ตั้งค่า b/63733651
1.0.0 Alpha 4 - 11 กรกฎาคม 2017
การเปลี่ยนแปลง API
เพิ่มวิธีอำนวยความสะดวกแบบใหม่ (
runInTransaction()) ใน RoomDatabase แล้วตอนนี้เมธอด
@Insert,@Deleteและ@Updateมีพารามิเตอร์จากเอนทิตีประเภทต่างๆ ได้แล้ว b/62682405
แก้ไขข้อบกพร่อง
แก้ไขการจัดการ
byte[]ใน@Daoเมธอด b/62460045ตอนนี้การตรวจสอบการย้ายข้อมูลในห้องแชทใช้การเปรียบเทียบที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ b/62875382
แก้ไขการกำหนดค่า Proguard สำหรับอาร์ติแฟกต์ Lifecycles b/62113696
1.0.0 Alpha 3 - 15 มิถุนายน 2017
การเปลี่ยนแปลง API
ขณะนี้
@OnLifecycleEventรองรับพารามิเตอร์เหตุการณ์เพียง 1 รายการเท่านั้น นี่คือการเปลี่ยนแปลงเพื่อเตรียมพร้อมสำหรับการสนับสนุน Java 8 เพื่อให้เราสามารถโยกย้ายไปยัง ใหม่ด้วยเมธอดที่เป็นค่าเริ่มต้นในอนาคต เฉพาะที่เกี่ยวข้องกับการเปลี่ยนแปลงนี้ เมธอดที่มีคำอธิบายประกอบ@OnLifecycleEvent(ON_ANY)สามารถรับพารามิเตอร์ประเภทที่ 2 ได้Event(พารามิเตอร์แรกคือLifecycleOwner) โปรดดูรายละเอียดในเอกสารวงจรย้ายชั้นเรียน
LifecycleActivityและLifecycleFragmentไปยังอาร์ติแฟกต์android.arch.lifecycle:extensionsแล้วMigrationTestHelper ได้รับอินสแตนซ์ Instrumentation แทน
Contextเพื่อให้สามารถอ่านสคีมาจากเนื้อหาทดสอบและสร้าง ฐานข้อมูลในบริบทของแอปพลิเคชันคำอธิบายประกอบ
@Insert,@Deleteและ@Updateใน@DAOวิธีจะมีIterableเป็นประเภทพารามิเตอร์ได้แล้ว b/62259820
แก้ไขข้อบกพร่อง
ระบบจะไม่เรียกเมธอดที่ถูกแทนที่ที่มีเหตุการณ์ในวงจรหลายครั้งอีกต่อไป
ตอนนี้มีการจัดการพารามิเตอร์
INหลายรายการอย่างถูกต้องแล้ว b/62608681ขณะนี้คลาส Abstract DAO มีตัวสร้างที่รับ
@Databaseอินสแตนซ์ b/38488747ตอนนี้
DAOมีซูเปอร์คลาส/อินเทอร์เฟซพร้อมพารามิเตอร์ประเภทแล้ว b/62103620
1.0.0 Alpha 2 - 2 มิถุนายน 2017
การเปลี่ยนแปลง API
ขณะนี้ Callback AssignationTracker จะได้รับรายการชื่อตารางที่เปลี่ยนแปลง (b/38468740)
ลดแพลตฟอร์ม API ของคลาส SupportSQLiteDatabase (b/38481640)
แก้ไขข้อบกพร่อง
- ไฟล์ Proguard สำหรับวงจร (b/62113696)
- การสูญเสียข้อมูลเมื่อใช้ตัวแปลงประเภท (b/62100716)
- อนุญาตให้แสดงผล
Long[]จากคำค้นหา@Insertรายการ
1.0.0 Alpha 1 - 17 พฤษภาคม 2017
MinSDK: 14
คำแนะนำทั่วไป
แม้ว่าเราจะทำการทดสอบหลายครั้งก่อนเปิดตัว แต่ปัจจุบันคอมโพเนนต์สถาปัตยกรรมยังอยู่ในเวอร์ชันอัลฟ่า หากคุณกำลังสร้างแอปเวอร์ชันที่ใช้งานจริง โปรดทราบว่า API จะมีการเปลี่ยนแปลงก่อนรุ่น 1.0 และอาจไม่มีประสิทธิภาพอย่างสมบูรณ์ หากคุณไม่สะดวกที่จะแก้ไขข้อบกพร่องในไลบรารีที่คุณใช้ เราขอแนะนำให้ลองใช้คอมโพเนนต์สถาปัตยกรรมในโปรเจ็กต์ด้านข้างก่อน
เราจึงไม่แนะนำให้ทุกคนย้ายข้อมูลในวันนี้ โดยเราจะมีคำแนะนำในการย้ายข้อมูลให้พร้อมสำหรับคอมโพเนนต์สถาปัตยกรรมรุ่น 1.0 ที่เตรียมไว้ให้
ข้อจำกัดและปัญหาที่ทราบ
- วงจร
FragmentและActivityCompatในไลบรารีการสนับสนุนยังไม่ได้ใช้อินเทอร์เฟซLifecycleOwnerโดยจะดำเนินการเมื่อคอมโพเนนต์สถาปัตยกรรมถึงเวอร์ชัน 1.0.0