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/62334005fallbackToDestructiveMigrationOnDowngrade
: เป็น API ใหม่ในRoomDatabase.Builder
เพื่อสร้างฐานข้อมูลใหม่โดยอัตโนมัติหากมีการดาวน์เกรด b/110416954ignoredColumns
: เป็น 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
ฟีเจอร์ใหม่
- ตอนนี้ระบบรองรับการเปลี่ยนองค์ประกอบที่แชร์สำหรับปลายทางของส่วนย่อยและกิจกรรมแล้ว b/79665225 ดูข้อมูลเพิ่มเติมได้ที่ใช้การนำทางด้วยคอมโพเนนต์สถาปัตยกรรมการนำทาง
- ตอนนี้การเลือกรายการใน
NavigationView
จะเป็นการปิด Bottom Sheet b/112158843
การเปลี่ยนแปลง 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/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 ที่ทับซ้อนกันเมื่อใช้
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/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
หรือ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/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.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
แก้ไขข้อบกพร่อง
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
ได้แล้ว ดูรายละเอียดในเอกสารอ้างอิง@Transaction
b/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
หรือLong
b/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
หรือ@Relation
b/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 ที่สองเมื่อนำรายการแรกออกจากเมธอด
onChanged
b/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
หรือ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
ขณะนี้ 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