ที่เก็บถาวรบันทึกประจำรุ่นของคอมโพเนนต์สถาปัตยกรรม

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() กลับมา false b/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 ให้กับ FragmentFactory b/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 จากเดิม Payload Worker ไม่มีเมธอด 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()
  • ถือว่า null Result เป็นความล้มเหลวใน ListenableWorker b/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 จากเดิม Payload Worker ไม่มีเมธอด 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-coroutines b/69474692
  • ตอนนี้เมธอด DAO ที่มีคำอธิบายประกอบด้วย @Insert, @Delete หรือ @Update รองรับ ListenableFuture เป็นประเภทการแสดงผลแล้ว b/119418331

แก้ไขข้อบกพร่อง

  • แก้ไขข้อบกพร่องที่ห้องพยายามค้นหาเครื่องมือสร้างที่มีคอลัมน์ในพร็อพเพอร์ตี้ ignoredColumns ของ @Entity อย่างไม่ถูกต้อง b/119830714
  • แก้ไขข้อบกพร่องที่ Room ไม่ทำเครื่องหมายพารามิเตอร์เมธอด DAO ว่าเป็นพารามิเตอร์สุดท้ายในการใช้งานที่สร้างขึ้น b/118015483
  • แก้ไขข้อบกพร่องที่ตัวประมวลผลของห้องขัดข้องเมื่อรายงานข้อผิดพลาดในการค้นหาที่มีสัญลักษณ์พิเศษ b/119520136
  • แก้ไขข้อบกพร่องที่ห้องจะปฏิเสธการใช้งาน Collection อื่นๆ ที่เป็นอาร์กิวเมนต์ของนิพจน์ IN b/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 และจำนวนเมธอด
  • การพยายามinitialize WorkManager มากกว่า 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 อีกต่อไป
  • การพยายามinitialize WorkManager มากกว่า 1 ครั้งต่อกระบวนการจะส่งผลให้เกิด IllegalStateException

1 พฤศจิกายน 2018

การแบ่งหน้า

ระบบจะเผยแพร่การแบ่งหน้า 2.1.0-beta01 โดยไม่มีการเปลี่ยนแปลงจาก 2.1.0-alpha01

30 ตุลาคม 2018

ห้อง

ปล่อยห้อง 2.1.0-alpha02 ให้แก้ไขข้อบกพร่องหลายรายการและฟีเจอร์ใหม่

ฟีเจอร์ใหม่

  • เพิ่มการรองรับการอ้างอิง @DatabaseView ใน @Relation b/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/62334005
  • fallbackToDestructiveMigrationOnDowngrade: เป็น API ใหม่ใน RoomDatabase.Builder เพื่อสร้างฐานข้อมูลใหม่โดยอัตโนมัติหากมีการดาวน์เกรด b/110416954
  • ignoredColumns: เป็น API ใหม่ในคำอธิบายประกอบ @Entity ที่สามารถใช้เพื่อแสดงรายการช่องที่ละเว้นตามชื่อได้ มีประโยชน์สำหรับการละเว้นช่องที่รับช่วงมาในเอนทิตี b/63522075

การเปลี่ยนแปลง API / ลักษณะการทำงาน

  • ขณะนี้ mCallback และ mDatabase ใน RoomDatabase เปลี่ยนเป็น @Deprecated แล้ว และจะถูกนำออกจากห้องแชทเวอร์ชันหลักเวอร์ชันถัดไป b/76109329

แก้ไขข้อบกพร่อง

  • แก้ไขปัญหา 2 ข้อที่ห้องแชทไม่สามารถกู้คืนได้อย่างถูกต้องจากฐานข้อมูลที่เสียหาย หรือการย้ายข้อมูลที่ไม่ดีระหว่างการเริ่มต้น b/111504749 และ b/111519144
  • ขณะนี้ Room จะใช้ตัวสร้างหลักของ Kotlin ในคลาสข้อมูลอย่างถูกต้องเพื่อหลีกเลี่ยงไม่ให้ต้องประกาศฟิลด์เป็น vars b/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

ฟีเจอร์ใหม่

การเปลี่ยนแปลง API

  • การเปลี่ยนแปลงสำคัญ: ตอนนี้เมธอด Navigator navigate() จะใช้พารามิเตอร์ Navigator.Extras
  • ตอนนี้เมธอด getGraph() ของ NavController คือ NonNull b/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 แทน @NonNull b/112275229

การเปลี่ยนแปลง API

  • ขณะนี้ Worker ได้ขยายชั้นเรียนใหม่ ซึ่งก็คือ NonBlockingWorker แล้ว การดำเนินการนี้จะไม่ส่งผลต่อการใช้งานปัจจุบัน ในอนาคต NonBlockingWorker จะเป็นเอนทิตีที่รองรับอย่างเต็มรูปแบบสำหรับโซลูชันการแยกชุดข้อความที่กำหนดเอง
  • เปลี่ยนคำอธิบายประกอบประเภทการแสดงผล Data.getBooleanArray(String) และ Data.getIntArray(String) เป็น @Nullable แทน @NonNull b/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
  • แก้ไขการตั้งเวลา PeriodicWorkRequest 2 ครั้งเมื่อใช้ JobScheduler b/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 จะกลายเป็น setDemoControllerIndex b/79995048
    • เช่น action_show_settings จะกลายเป็น actionShowSettings b/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 แล้ว

แก้ไขข้อบกพร่อง

  • แก้ไขเงื่อนไขการแข่งขันในการใช้งานตาม AlarmManager b/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/79996760

  • Worker.getRunAttemptCount() จะแสดงผลจำนวนการเรียกใช้ปัจจุบันสำหรับ Worker ที่ระบุ b/79716516

  • WorkManager.enqueueUniquePeriodicWork(String uniqueWorkName, ExistingPeriodicWorkPolicy existingPeriodicWorkPolicy, PeriodicWorkRequest periodicWork) ช่วยให้คุณจัดคิว PeriodicWorkRequest ที่ไม่ซ้ำกันได้ b/79600647

  • WorkManager.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/109826220

  • Navigation 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 ที่ทับซ้อนกันเมื่อใช้ launchSingleTop b/79407969

  • ขณะนี้การนำทางจะสร้างสแต็กย้อนกลับสังเคราะห์ที่ถูกต้องสำหรับกราฟที่ซ้อนกัน b/79734195

  • ตอนนี้ NavigationUI จะไฮไลต์รายการที่ถูกต้องเมื่อใช้กราฟที่ซ้อนกันเป็น MenuItem b/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 ใน Data b/79443878

  • ตอนนี้ Data.Builder.putAll() จะแสดงผลอินสแตนซ์ของ Builder b/79699162

  • Javadoc และการแก้ไขเพิ่มเติมในเอกสารประกอบ 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/76031240

  • RoomDatabase.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 หรือ Relation b/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 -> AsyncListDiffer
    • ListAdapterConfig -> AsyncDifferConfig
    • DiffCallback -> 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.Builder b/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 และ Kotlin b/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.0
  • android.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/71458963
  • fallBackToDestructiveMigrationsFrom: 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.Factory LivePagedListProvider เครื่องมือสร้างนั้นมีความสามารถแบบเดียวกัน การกำหนดค่าเองและค่าเริ่มต้นที่ง่ายขึ้น โรงงานอนุญาตให้สร้าง 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

แก้ไขข้อบกพร่อง

ผู้สมัครเปิดตัว - 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 ได้แล้ว ดูรายละเอียดในเอกสารอ้างอิง @Transaction b/65112315
    • นำชั้นเรียน StringUtil รายการในห้องออกจากสาธารณะแล้ว API (ไม่ได้มีเจตนาให้เป็น API สาธารณะ)
  • วงจร:

    • LiveData ทำงานได้อย่างถูกต้องเมื่อกิจกรรมครอบคลุมเพียงบางส่วนใน API < 24. b/65665621

    • ขณะนี้มีการเรียกเมธอด OnLifecycleEvent ในชั้นเรียนผู้ปกครองอย่างถูกต้อง หรือ และจะพิมพ์คำเตือนในระหว่างการรวบรวมหากไม่สามารถพิมพ์ได้ b/63474615

    • Lifecycle จะคง 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 หรือ Long b/67086876
    • เครื่องมือติดตามการใช้ไม่ได้รองรับการกลับเข้ามาใหม่ในโหมดทดสอบอย่างเหมาะสม b/65471397
    • ตอนนี้ห้องแชทจะตรวจหาอักขระที่ไม่ถูกต้องในคอลัมน์และตาราง ชื่อขณะคอมไพล์ (อักขระไม่ถูกต้อง: `, ") b/64749111

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 หรือ @Relation b/62600692
    • คีย์หลักต้องมีคำอธิบายประกอบด้วย @NonNull เว้นแต่จะสร้างขึ้นโดยอัตโนมัติ b/64292391
      • อาจต้องย้ายข้อมูลสคีมาเพื่อทำการเปลี่ยนแปลงนี้ ขออภัยในความไม่สะดวก
    • เพิ่มคำอธิบายประกอบตามความสะดวกใหม่ (@Transaction) ซึ่ง ลบล้างเมธอด DAO และเรียกใช้ภายในธุรกรรม
  • รองรับฐานข้อมูล SQLite:

    • การเปลี่ยนแปลง API ในการกำหนดค่าฐานข้อมูล b/65349673 b/65499876
  • การแบ่งหน้า:

    • ปรับปรุงเอกสารการแบ่งหน้าให้มีตัวอย่างและคำอธิบายประกอบชุดข้อความมากขึ้น

แก้ไขข้อบกพร่อง

  • ห้อง:
    • สตริงหลายบรรทัด Kotlin ในเมธอด @Query ได้รับการจัดการอย่างเหมาะสม b/65809374
  • การแบ่งหน้า:
    • อาร์ติแฟกต์การแบ่งหน้าไม่ได้ขึ้นอยู่กับ 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 ที่สองเมื่อนำรายการแรกออกจากเมธอด onChanged b/64285805

1.0.0 Alpha 8 - 1 สิงหาคม 2017

การเปลี่ยนแปลงลักษณะการทำงาน

  • เพิ่มข้อจำกัด NOT NULL สำหรับคอลัมน์ประเภทพื้นฐานหรือคอลัมน์ มีคำอธิบายประกอบ NonNull ซึ่งจะเปลี่ยนโครงสร้างของ ดังนั้นหากคุณใช้คอมโพเนนต์สถาปัตยกรรมอัลฟ่า 7 หรือก่อนหน้าอยู่แล้ว คุณต้องใช้การย้ายข้อมูลหากต้องการเก็บข้อมูลไว้ หรือใช้ fallbackToDestructiveMigration() ในเครื่องมือสร้าง b/62007004

การเปลี่ยนแปลง API

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 หรือ Single b/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

แก้ไขข้อบกพร่อง

  • ไฟล์ Proguard สำหรับวงจร (b/62113696)
  • การสูญเสียข้อมูลเมื่อใช้ตัวแปลงประเภท (b/62100716)
  • อนุญาตให้แสดงผล Long[] จากคำค้นหา @Insert รายการ

1.0.0 Alpha 1 - 17 พฤษภาคม 2017

MinSDK: 14

คำแนะนำทั่วไป

  • แม้ว่าเราจะทำการทดสอบหลายครั้งก่อนเปิดตัว แต่ปัจจุบันคอมโพเนนต์สถาปัตยกรรมยังอยู่ในเวอร์ชันอัลฟ่า หากคุณกำลังสร้างแอปเวอร์ชันที่ใช้งานจริง โปรดทราบว่า API จะมีการเปลี่ยนแปลงก่อนรุ่น 1.0 และอาจไม่มีประสิทธิภาพอย่างสมบูรณ์ หากคุณไม่สะดวกที่จะแก้ไขข้อบกพร่องในไลบรารีที่คุณใช้ เราขอแนะนำให้ลองใช้คอมโพเนนต์สถาปัตยกรรมในโปรเจ็กต์ด้านข้างก่อน

  • เราจึงไม่แนะนำให้ทุกคนย้ายข้อมูลในวันนี้ โดยเราจะมีคำแนะนำในการย้ายข้อมูลให้พร้อมสำหรับคอมโพเนนต์สถาปัตยกรรมรุ่น 1.0 ที่เตรียมไว้ให้

ข้อจำกัดและปัญหาที่ทราบ