เขียนรันไทม์
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose androidx.compose.runtime.snapshots
(ดูเอกสารอ้างอิง API สำหรับแพ็กเกจการเขียนทั้งหมด)
อัปเดตล่าสุด | รุ่นที่เสถียร | ตัวเลือกถอนการอ้างสิทธิ์ | รุ่นเบต้า | รุ่นอัลฟ่า |
---|---|---|---|---|
4 กันยายน 2024 | 1.7.0 | - | - | 1.8.0-alpha01 |
โครงสร้าง
การเขียนจะรวมรหัสกลุ่ม Maven 7 รายการภายใน androidx
แต่ละกลุ่ม
มีชุดย่อยของฟังก์ชันเป้าหมาย โดยแต่ละฟังก์ชันมีชุดรุ่นของตัวเอง
หมายเหตุ
ตารางนี้จะอธิบายกลุ่มและลิงก์ไปยังบันทึกประจำรุ่นแต่ละชุด
กลุ่ม | คำอธิบาย |
---|---|
compose.animation | สร้างภาพเคลื่อนไหวในแอปพลิเคชัน Jetpack Compose เพื่อยกระดับประสบการณ์ของผู้ใช้ |
compose.compiler | แปลงฟังก์ชัน @Composable และเปิดใช้การเพิ่มประสิทธิภาพด้วยปลั๊กอินคอมไพเลอร์ Kotlin |
compose.foundation | เขียนแอปพลิเคชัน Jetpack Compose ด้วยองค์ประกอบพร้อมใช้และต่อยอดจากรากฐานเพื่อสร้างชิ้นงานของระบบการออกแบบของคุณเอง |
compose.material | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ดีไซน์ Material ที่พร้อมใช้งาน นี่คือจุดแรกเข้าของ Compose ในระดับที่สูงกว่า ซึ่งออกแบบมาเพื่อมอบคอมโพเนนต์ที่ตรงกับคอมโพเนนต์ที่อธิบายไว้ใน www.material.io |
compose.material3 | สร้าง UI ของ Jetpack Compose ด้วยคอมโพเนนต์ Material Design 3 ซึ่งเป็นการพัฒนาครั้งใหม่ของดีไซน์ Material Material 3 ประกอบด้วยธีมและคอมโพเนนต์ที่อัปเดตใหม่ และฟีเจอร์การปรับเปลี่ยนในแบบของคุณของ Material You เช่น สีแบบไดนามิก ทั้งยังออกแบบมาให้สอดคล้องกับสไตล์ภาพและ UI ของระบบใหม่ของ Android 12 |
compose.runtime | องค์ประกอบพื้นฐานพื้นฐานของโมเดลการเขียนโปรแกรมและการจัดการสถานะของ Compose และรันไทม์หลักของปลั๊กอิน Compose Compiler ที่จะกำหนดเป้าหมาย |
compose.ui | องค์ประกอบพื้นฐานของ UI การเขียนซึ่งจำเป็นต่อการโต้ตอบกับอุปกรณ์ ซึ่งรวมถึงเลย์เอาต์ การวาดภาพ และการป้อนข้อมูล |
การประกาศทรัพยากร Dependency
หากต้องการเพิ่มทรัพยากร Dependency ใน Compose คุณต้องเพิ่มที่เก็บ Google Maven ไปยัง อ่านที่เก็บ Maven ของ Google เพื่อดูข้อมูลเพิ่มเติม
เพิ่มทรัพยากร Dependency สำหรับอาร์ติแฟกต์ที่คุณต้องการในไฟล์ build.gradle
สำหรับ
ในแอปหรือโมดูล
ดึงดูด
dependencies { implementation "androidx.compose.runtime:runtime:1.7.0" implementation "androidx.compose.runtime:runtime-livedata:1.7.0" implementation "androidx.compose.runtime:runtime-rxjava2:1.7.0" } android { buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
dependencies { implementation("androidx.compose.runtime:runtime:1.7.0") implementation("androidx.compose.runtime:runtime-livedata:1.7.0") implementation("androidx.compose.runtime:runtime-rxjava2:1.7.0") } android { buildFeatures { compose = true } composeOptions { kotlinCompilerExtensionVersion = "1.5.15" } kotlinOptions { jvmTarget = "1.8" } }
ดูข้อมูลเพิ่มเติมเกี่ยวกับทรัพยากร Dependency ได้ที่หัวข้อเพิ่มการอ้างอิงของบิลด์
ความคิดเห็น
ความคิดเห็นของคุณช่วยปรับปรุง Jetpack ให้ดียิ่งขึ้น โปรดแจ้งให้เราทราบหากคุณพบปัญหาใหม่หรือมี ไอเดียในการปรับปรุงไลบรารีนี้ โปรดดูที่ ปัญหาที่มีอยู่ ในไลบรารีนี้ก่อนที่จะสร้างใหม่ คุณสามารถเพิ่มการโหวตให้กับปัญหาที่มีอยู่ได้โดย คลิกปุ่มดาว
ดูเอกสารประกอบเกี่ยวกับเครื่องมือติดตามปัญหา เพื่อดูข้อมูลเพิ่มเติม
การติดตามรันไทม์เวอร์ชัน 1.0
เวอร์ชัน 1.0.0-beta01
29 พฤศจิกายน 2023
ปล่อย androidx.compose.runtime:runtime-tracing:1.0.0-beta01
แล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-alpha05
15 พฤศจิกายน 2023
ปล่อย androidx.compose.runtime:runtime-tracing:1.0.0-alpha05
แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ทรัพยากร Dependency ที่ปักหมุดไปยังเวอร์ชันเสถียรต่ำสุดที่รองรับ (เช่น รันไทม์การเขียนและ Perfetto) - การแก้ไขปัญหาที่การติดตามรันไทม์ของการเขียนจะทำให้รันไทม์ในการเขียนเวอร์ชันใหม่เข้ามาในแอป
เวอร์ชัน 1.0.0-alpha04
23 สิงหาคม 2023
ปล่อย androidx.compose.runtime:runtime-tracing:1.0.0-alpha04
แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- สามารถทำงานร่วมกับ Comparison and Tracing Perfetto เวอร์ชันล่าสุด ทำให้สามารถรองรับ Composition Tracing เมื่อแอปเริ่ม (Cold Start) เช่น ในการเปรียบเทียบ AndroidX และ Android Studio (เริ่มต้นจาก Hedgehog รุ่นเบต้า 2)
การเปลี่ยนแปลง API
- เปลี่ยนชื่อ
androidx.tracing.perfetto.Trace
เป็นandroidx.tracing.perfetto.PerfettoSdkTrace
แล้ว (I44af8) - การทำให้ API ของ Tracing Perfetto SDK สอดคล้องกับ
android.os.Trace
(I73ba0, b/282199917) - ข้อกําหนดเบื้องต้นสําหรับการติดตามเมื่อเริ่มต้นแอป (Iad890)
- ไฟล์ API สาธารณะและทดลองที่ผสานรวม (I0f2e1, b/278769092)
เวอร์ชัน 1.0.0-alpha02
8 กุมภาพันธ์ 2023
ปล่อย androidx.compose.runtime:runtime-tracing:1.0.0-alpha02
แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ไม่มีการเปลี่ยนแปลงฟังก์ชัน การเพิ่มประสิทธิภาพด้านประสิทธิภาพหลายรายการในทรัพยากร Dependency แบบดาวน์สตรีม
androidx.tracing:tracing-perfetto*
เวอร์ชัน 1.0.0-alpha01
7 กันยายน 2022
ปล่อย androidx.compose.runtime:runtime-tracing:1.0.0-alpha01
แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
androidx.compose.runtime:runtime-tracing
เป็นไลบรารีที่ช่วยให้มีการติดตามเพิ่มเติมในแอป Compose เมื่อมีเครื่องมือที่รองรับ (เร็วๆ นี้) รุ่นเริ่มต้นนี้คือ 1.0.0-alpha01
เวอร์ชัน 1.8
เวอร์ชัน 1.8.0-alpha01
4 กันยายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.8.0-alpha01
แล้ว เวอร์ชัน 1.8.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7
เวอร์ชัน 1.7.0
4 กันยายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0
แล้ว เวอร์ชัน 1.7.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.6.0
- เพิ่มความสามารถในการระบุการเรียบเรียงเพลงในเครื่องซึ่งคำนวณตามค่าของท้องถิ่นในการเรียบเรียงเพลงโดยค่าเริ่มต้น โดยใช้
compositionLocalWithComputedDefault()
หรือด้วยการระบุ lambda เพื่อใช้คำนวณค่าโดยใช้providesComputed
แทนprovides
- ค่าขององค์ประกอบในเครื่องสามารถหาได้โดยใช้คุณสมบัติ
currentValue
ขององค์ประกอบภายในที่เข้าถึงได้จากภายใน lambda การคำนวณค่า มีการใช้แทนcurrent
ซึ่งเข้าถึงได้ในฟังก์ชัน@Composable
เท่านั้น (Iadbc0) - ออบเจ็กต์สถานะที่สร้างขึ้นใหม่จะเข้าถึงได้ทันทีจากสแนปชอตอื่นๆ รวมถึงสแนปชอตส่วนกลางด้วยสถานะเริ่มต้น การแก้ไขหลังจากนั้นจะไม่แสดงจนกว่าจะมีการนำสแนปชอตที่มีออบเจ็กต์มาใช้
- สถานะเริ่มต้นของ
mutableStateOf()
รวมถึงเวอร์ชันพื้นฐานคือค่าที่ส่งผ่านเป็นพารามิเตอร์ไปยังmutableStateOf()
สถานะเริ่มต้นของmutableStateListOf()
และmutableStateMapOf()
ว่างเปล่า - เพิ่ม
Snapshot.isInSnapshot
และSnapshot.PreexistingSnapshotId
ที่ใช้เพื่อเปิดใช้ออบเจ็กต์สถานะเพื่อรองรับการเข้าถึงได้ทันทีจากสแนปชอตร่วมขณะที่สร้าง - ออบเจ็กต์สถานะที่กำหนดเองสามารถรองรับการเข้าถึงได้ทันทีโดยการปฏิบัติตามรูปแบบของการเปลี่ยนแปลงที่เกิดขึ้นกับออบเจ็กต์สแนปชอตในตัว (I84a17)
- เปิดใช้
nonSkippingGroupOptimization
สำหรับการเขียนไลบรารี ซึ่งจะทำให้โค้ดที่สร้างขึ้นสำหรับฟังก์ชัน Composable ที่ไม่สามารถรีสตาร์ทได้ใน androidx มีประสิทธิภาพมากขึ้น ในอนาคตเราวางแผนที่จะเปิดใช้งานโดยค่าเริ่มต้น I(acbc08) - ทำให้ lambda ที่ประกอบกันได้ไม่ถูกต้องในองค์ประกอบย่อยภายในเฟรมเดียวกัน (98301C)
- โทรหา
onRelease
ในลำดับเดียวกับonForgotten
(2cd790) - เปิดใช้โหมดการข้ามแบบเข้มงวด (ed1766)
- ทำให้
currentCompoundHashKey
ไม่ซ้ำกันในหลายๆ กรณี (d4a872)
เวอร์ชัน 1.7.0-rc01
21 สิงหาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-rc01
แล้ว เวอร์ชัน 1.7.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta07
7 สิงหาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta07
แล้ว เวอร์ชัน 1.7.0-beta07 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta06
24 กรกฎาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta06
แล้ว เวอร์ชัน 1.7.0-beta06 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta05
10 กรกฎาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta05
แล้ว เวอร์ชัน 1.7.0-beta05 มีสัญญาผูกมัดเหล่านี้
เวอร์ชัน 1.7.0-beta04
26 มิถุนายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta04
แล้ว เวอร์ชัน 1.7.0-beta04 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta03
12 มิถุนายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta03
แล้ว เวอร์ชัน 1.7.0-beta03 มีสัญญาผูกมัดเหล่านี้
เวอร์ชัน 1.7.0-beta02
29 พฤษภาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta02
แล้ว เวอร์ชัน 1.7.0-beta02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-beta01
14 พฤษภาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-beta01
แล้ว เวอร์ชัน 1.7.0-beta01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-alpha08
1 พฤษภาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha08
แล้ว เวอร์ชัน 1.7.0-alpha08 มีคอมมิตเหล่านี้
เวอร์ชัน 1.7.0-alpha07
17 เมษายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha07
แล้ว เวอร์ชัน 1.7.0-alpha07 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่มความสามารถในการระบุการเรียบเรียงเพลงในเครื่องซึ่งคำนวณตามค่าของท้องถิ่นในการเรียบเรียงเพลงโดยค่าเริ่มต้น โดยใช้
compositionLocalWithComputedDefault()
หรือด้วยการระบุ lambda เพื่อใช้คำนวณค่าโดยใช้providesComputed
แทนprovides
- ค่าขององค์ประกอบในเครื่องสามารถหาได้โดยใช้คุณสมบัติ
currentValue
ขององค์ประกอบภายในที่เข้าถึงได้จากภายใน lambda การคำนวณค่า มีการใช้แทนcurrent
ซึ่งเข้าถึงได้ในฟังก์ชัน@Composable
เท่านั้น (Iadbc0)
การเปลี่ยนแปลง API
- ออบเจ็กต์สถานะที่สร้างขึ้นใหม่จะเข้าถึงได้ทันทีจากสแนปชอตอื่นๆ รวมถึงสแนปชอตส่วนกลางด้วยสถานะเริ่มต้น การแก้ไขหลังจากนั้นจะไม่แสดงจนกว่าจะมีการนำสแนปชอตที่มีออบเจ็กต์มาใช้
- สถานะเริ่มต้นของ
mutableStateOf()
รวมถึงเวอร์ชันพื้นฐานคือค่าที่ส่งผ่านเป็นพารามิเตอร์ไปยังmutableStateOf()
สถานะเริ่มต้นของmutableStateListOf()
และmutableStateMapOf()
ว่างเปล่า - เพิ่ม
Snapshot.isInSnapshot
และSnapshot.PreexistingSnapshotId
ที่ใช้เพื่อเปิดใช้ออบเจ็กต์สถานะเพื่อรองรับการเข้าถึงได้ทันทีจากสแนปชอตร่วมขณะที่สร้าง - ออบเจ็กต์สถานะที่กำหนดเองสามารถรองรับการเข้าถึงได้ทันทีโดยการปฏิบัติตามรูปแบบของการเปลี่ยนแปลงที่เกิดขึ้นกับออบเจ็กต์สแนปชอตในตัว (I84a17)
แก้ไขข้อบกพร่อง
- แก้ไขการรวม
readObserver
ในสแนปชอตที่ฝัง ซึ่งทำให้สถานะที่ได้รับที่ซ้อนกันอยู่ภายใต้การระบุที่ไม่ถูกต้องเมื่อใช้ภายในsnapshotFlow
(Idf138)
เวอร์ชัน 1.7.0-alpha06
3 เมษายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha06
แล้ว เวอร์ชัน 1.7.0-alpha06 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข "ระบุการจัดการค่าเดี่ยว"
providesDefault
(538f45) - หลีกเลี่ยงการติดตายในเครื่องมือคอมโพสเซอร์เมื่อเข้าถึงนาฬิกาเฟรม (07e5c6)
เวอร์ชัน 1.7.0-alpha05
20 มีนาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha05
แล้ว เวอร์ชัน 1.7.0-alpha05 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ล้างการเปลี่ยนแปลงล่าช้าในการเรียบเรียงที่ปิดใช้งาน (5950bc)
เวอร์ชัน 1.7.0-alpha04
6 มีนาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha04
แล้ว เวอร์ชัน 1.7.0-alpha04 มีคอมมิตเหล่านี้
การปรับปรุงประสิทธิภาพ
- เรียกใช้
Snapshot.current
ครั้งเดียวต่อการประเมินสถานะที่ได้รับ (ee7daf) - อ่าน
currentRecord
ครั้งเดียวต่อการสังเกตการณ์ในการเรียบเรียง (b882b2) - นำการจัดสรรรายการซ้ำโดยไม่ตั้งใจใน
snapshotFlow
(231e56) ออก - เปิดใช้
nonSkippingGroupOptimization
สำหรับการเขียนไลบรารี ซึ่งจะทำให้โค้ดที่สร้างขึ้นสำหรับฟังก์ชัน Composable ที่ไม่สามารถรีสตาร์ทได้ใน androidx มีประสิทธิภาพมากขึ้น ในอนาคตเราวางแผนที่จะเปิดใช้งานโดยค่าเริ่มต้น I(acbc08)
เวอร์ชัน 1.7.0-alpha03
21 กุมภาพันธ์ 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha03
แล้ว เวอร์ชัน 1.7.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- แนะนำกลุ่มแทนที่เพื่อปรับปรุงการตรวจหาการเปลี่ยนแปลง (0941b5)
การปรับปรุงประสิทธิภาพ
- ปรับปรุงการจัดสรรหน่วยความจำเมื่อตรวจพบการเปลี่ยนแปลง (53e7fd)
- แก้ไขการรั่วไหลของหน่วยความจำในคอมโพสเซอร์ (0e097d)
- ใช้
ScopeMap
เพื่อส่งโมฆะเมื่อเขียนใหม่ (e19a7e) - การเพิ่มประสิทธิภาพการเพิ่มประสิทธิภาพจะแมปให้เก็บเฉพาะสถานะที่ได้มาเท่านั้น (f11c44)
- แทนที่การใช้งาน
IdentityArraySet
ด้วยScatterSet
(db572e) - เพิ่มประสิทธิภาพ
removeScope
ในScopeMap
(bb0530)
เวอร์ชัน 1.7.0-alpha02
7 กุมภาพันธ์ 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha02
แล้ว เวอร์ชัน 1.7.0-alpha02 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ทำให้ lambda ที่ประกอบกันได้ไม่ถูกต้องในองค์ประกอบย่อยภายในเฟรมเดียวกัน (98301C)
- โทรหา
onRelease
ในลำดับเดียวกับonForgotten
(2cd790) - กรองสถานะที่เปลี่ยนแปลงซึ่งไม่ปรากฏใน
snapshotFlow
(796B80)
การปรับปรุงประสิทธิภาพ
- แก้ไขผู้สังเกตการณ์สแนปชอตเมื่อมีความโปร่งใสอยู่แล้ว (F60f30)
- เพิ่มประสิทธิภาพ
SnapshotIdSet.lowest()
(7ae149) - ใช้
fold()
ที่ไม่มีการจัดสรรในSnapshotIdSet
(532b7d) - นําการจัดสรรตัววนซ้ำ (83f96b) ออก
เวอร์ชัน 1.7.0-alpha01
24 มกราคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.7.0-alpha01
แล้ว เวอร์ชัน 1.7.0-alpha01 มีคอมมิตเหล่านี้
การเพิ่มประสิทธิภาพ
- เพิ่มความสามารถในการสร้างสล็อตหลังจากที่เพิ่มกลุ่มย่อยแล้ว (b5960c)
- เพิ่มประสิทธิภาพการแก้ไขการบันทึกสถานะของสแนปชอต (28c3fe)
- เปิดใช้โหมดการข้ามแบบเข้มงวด (ed1766)
แก้ไขข้อบกพร่อง
- พิจารณาเมตาพารามิเตอร์เริ่มต้นในการจำภายใน (096665)
- ทำให้
currentCompoundHashKey
ไม่ซ้ำกันในหลายๆ กรณี (d4a872) - รับรู้ถึงกลุ่มเมื่อออกจากการเรียกใช้ฟังก์ชันในบรรทัด (2a90fc)
เวอร์ชัน 1.6
เวอร์ชัน 1.6.8
12 มิถุนายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.8
แล้ว เวอร์ชัน 1.6.8 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.7
1 พฤษภาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.7
แล้ว เวอร์ชัน 1.6.7 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.6
17 เมษายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.6
แล้ว ไม่มีการเปลี่ยนแปลงตั้งแต่รุ่นล่าสุด
เวอร์ชัน 1.6.5
3 เมษายน 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.5
แล้ว เวอร์ชัน 1.6.5 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.4
20 มีนาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.4
แล้ว เวอร์ชัน 1.6.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.3
6 มีนาคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.3
แล้ว เวอร์ชัน 1.6.3 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.2
21 กุมภาพันธ์ 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.2
แล้ว เวอร์ชัน 1.6.2 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.1
7 กุมภาพันธ์ 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.1
แล้ว เวอร์ชัน 1.6.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- โทรหา
onRelease
ในลำดับเดียวกับonForgotten
(2cd790) - กรองสถานะที่เปลี่ยนแปลงซึ่งไม่ปรากฏใน
snapshotFlow
(796B80)
เวอร์ชัน 1.6.0
24 มกราคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.0
แล้ว เวอร์ชัน 1.6.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.5.0
ฟีเจอร์ใหม่
- ส่งข้อยกเว้นที่กลืนไปแล้วระหว่างลูปการจัดองค์ประกอบใหม่อีกครั้ง (4dff9a)
การเพิ่มประสิทธิภาพ
- เพิ่มประสิทธิภาพการแก้ไขการบันทึกสถานะของสแนปชอต (28c3fe)
- เพิ่มประสิทธิภาพ
rememberSaveable
(f01d79) - เลื่อนสถานะที่ได้รับการอ่านซ้ำจนกว่าจะบันทึกการเปลี่ยนแปลง (f38099)
- ปรับปรุงการระบุค่าในเครื่องสำหรับการเรียบเรียงเพลง (a337ea)
แก้ไขข้อบกพร่อง
- แก้ไขการรั่วไหลของหน่วยความจำในตารางสล็อต (73fcfe)
- ข้ามการจัดองค์ประกอบย่อยใหม่ที่จะนำออก (Ieeb99, b/254645321)
- ทริกเกอร์วงจรการใช้งาน
RememberObserver
เฉพาะเมื่อจัดเก็บไว้ในการคำนวณ "จำ" (f6b4dc) - จำกัดการจับภาพ
$dirty
เฉพาะ Lambda ในบรรทัด (acfca0) - แก้ไขเนื้อหาที่ย้ายได้ในบางครั้งซึ่งได้รับการจัดองค์ประกอบที่ไม่ถูกต้อง (035cd6)
เวอร์ชัน 1.6.0-rc01
10 มกราคม 2024
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-rc01
แล้ว เวอร์ชัน 1.6.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-beta03
13 ธันวาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-beta03
แล้ว เวอร์ชัน 1.6.0-beta03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-beta02
29 พฤศจิกายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-beta02
แล้ว เวอร์ชัน 1.6.0-beta02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-beta01
15 พฤศจิกายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-beta01
แล้ว เวอร์ชัน 1.6.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เผยแพร่ค่าความเสถียรบางอย่างในคำอธิบายประกอบ (274a4c)
แก้ไขข้อบกพร่อง
- ใช้นโยบายการอ้างอิงสำหรับสถานะขอบเขตภายในการเรียบเรียงในบริบท (83361C)
- จำกัดการจับภาพ $dirty ไปยัง lambda ในบรรทัด (acfca0)
- แก้ไขเนื้อหาที่ย้ายได้ในบางครั้งซึ่งได้รับการจัดองค์ประกอบที่ไม่ถูกต้อง (035cd6)
- ใช้แฮชแมปแบบไม่จัดสรรที่รวดเร็วขึ้นใน
RecomposeScopeImpl
(D79494) - ใช้
ObjectIntMap
ในDerivedState
(21862E) - ใช้
IntRef
สำหรับ intSnapshotThreadLocal
ในDerivedState
(04eaf4)
เวอร์ชัน 1.6.0-alpha08
18 ตุลาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha08
แล้ว เวอร์ชัน 1.6.0-alpha08 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ทริกเกอร์วงจรการใช้งาน
RememberObserver
เฉพาะเมื่อจัดเก็บไว้ในการคำนวณ "จำ" (f6b4dc) - ปรับปรุงการจัดสรรในการจัดเรียงรายการที่ไม่ถูกต้อง (954d63)
- ใช้แผนที่ใหม่ที่ไม่ได้จัดสรรใน
SnapshotStateObserver
(4303ce) - ล้างการระบุว่าไม่ถูกต้องเมื่อปิดใช้งานการเรียบเรียง (e001be)
เวอร์ชัน 1.6.0-alpha07
4 ตุลาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha07
แล้ว เวอร์ชัน 1.6.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้มีการทำเครื่องหมาย
SnapshotStateList
เป็นRandomAccess
เพื่อเปิดใช้เวอร์ชันการจัดทำดัชนีโดยตรงของตัวช่วยรายการที่ใช้ได้ (I5210c, b/219554654)
เวอร์ชัน 1.6.0-alpha06
20 กันยายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha06
แล้ว เวอร์ชัน 1.6.0-alpha06 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-alpha05
6 กันยายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha05
แล้ว เวอร์ชัน 1.6.0-alpha05 มีคอมมิตเหล่านี้
เวอร์ชัน 1.6.0-alpha04
23 สิงหาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha04
แล้ว เวอร์ชัน 1.6.0-alpha04 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ส่งข้อยกเว้นที่กลืนไปแล้วระหว่างลูปการจัดองค์ประกอบใหม่อีกครั้ง (4dff9a)
การเปลี่ยนแปลง API
- เพิ่มวิธีการปิดใช้งาน
ReusableComposition
โดยนำการสังเกตการณ์ออก แต่เก็บโหนดไว้ เปิดใช้งานการเรียบเรียงที่ปิดใช้งานอีกครั้งได้โดยโทรหาsetContent
(Ib7f31) - เพิ่มอินเทอร์เฟซ
ReusableComposition
เพื่อจัดการวงจรและการใช้องค์ประกอบย่อยซ้ำ (I812d1, b/252846775)
เวอร์ชัน 1.6.0-alpha03
9 สิงหาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha03
แล้ว เวอร์ชัน 1.6.0-alpha03 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขการเพิ่มประสิทธิภาพ
CompositionLocalProvider
ใหม่ (3118e88) - แก้ไขวิธีแยกประกอบโหนดเนื้อหาที่ย้ายได้ (5e3d59b)
เวอร์ชัน 1.6.0-alpha02
26 กรกฎาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha02
แล้ว เวอร์ชัน 1.6.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่และ การเพิ่มประสิทธิภาพ
- เพิ่มประสิทธิภาพ
rememberSaveable
(f01d79) - เลื่อนสถานะที่ได้รับการอ่านซ้ำจนกว่าจะบันทึกการเปลี่ยนแปลง (f38099)
- ปรับปรุงการระบุค่าในเครื่องสำหรับการเรียบเรียงเพลง (a337ea)
- ทำเครื่องหมาย
SideEffect
เป็น@ExplicitGroupsComposable
เพื่อป้องกันการสร้างกลุ่ม (I74815) - หลีกเลี่ยงการเปรียบเทียบแผนที่ที่มีการวางองค์ประกอบร่วมกับการใช้ซ้ำ (782071)
การเปลี่ยนแปลง API
- เพิ่มโอเวอร์เฮดของกรณีพิเศษสำหรับ
CompositionLocalProviders
ซึ่งหลีกเลี่ยงการใช้โอเวอร์เฮดเพื่อให้ระบุค่าหลายค่าเร็วขึ้น แต่เกิดโอเวอร์เฮดเมื่อระบุค่าเดียว (I6d640, b/288169379)
แก้ไขข้อบกพร่อง
- แก้ไขการรั่วไหลของหน่วยความจำในตารางสล็อต (73fcfe)
- แก้ไขวิธีที่เราคืนค่า
rememberSaveable
เมื่อstateSaver
แสดงผลค่า Null (90748c)
เวอร์ชัน 1.6.0-alpha01
21 มิถุนายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.6.0-alpha01
แล้ว เวอร์ชัน 1.6.0-alpha01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ข้ามการจัดองค์ประกอบย่อยใหม่ที่จะนำออก (Ieeb99, b/254645321)
- ลดการจัดสรรเมื่อใช้สแนปชอต (I65c09)
- หลีกเลี่ยงการคำนวณ
readableHash
ในDerivedState
หากไม่มีการแก้ไขสแนปชอต (68c565)
รุ่น 1.5
เวอร์ชัน 1.5.4
18 ตุลาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.4
แล้ว เวอร์ชัน 1.5.4 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.3
4 ตุลาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.3
แล้ว เวอร์ชัน 1.5.3 มีคอมมิตเหล่านี้
รุ่น 1.5.2
27 กันยายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.2
แล้ว เวอร์ชัน 1.5.2 มีคอมมิตเหล่านี้
รุ่น 1.5.1
6 กันยายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.1
แล้ว เวอร์ชัน 1.5.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.5.0
9 สิงหาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0
แล้ว เวอร์ชัน 1.5.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการจัดสรรในการจัดองค์ประกอบใหม่ ภาพเคลื่อนไหวสี และ
AndroidComposeView
ออก (Ib2bfa) - เพิ่มคำอธิบายประกอบ
@StateFactoryMarker
เพื่อทำเครื่องหมายฟังก์ชันที่สร้างสถานะและต้องรวมอยู่ในการเรียกremember
(I64550) - เพิ่ม State และ
MutableState
(fb3d89) เวอร์ชันพื้นฐาน - เพิ่ม
Snapshot.isApplyObserverNotificationPending
(I672a5) แล้ว - เพิ่มเวอร์ชันพื้นฐานของ
State
API ซึ่งทำให้ติดตามค่า Int, Long, Float และ Double ในออบเจ็กต์State
ได้โดยไม่เสียค่าการทำกล่องอัตโนมัติ ใช้วิธีการจากโรงงานใหม่ เช่นmutableIntState(Int)
,mutableFloatStateOf(Float)
และอื่นๆ เพื่อใช้สิ่งเหล่านี้ (I48e43)
แก้ไขข้อบกพร่อง
- ข้ามการจัดองค์ประกอบย่อยใหม่ที่จะนำออก (Ieeb99, b/254645321)
- ไม่เก็บการอ้างอิงสแนปชอตใน
ComposerImpl
(0206f7) - อย่าใช้การจัดแต่ง 2 ครั้ง (f5791b)
- ตรวจสอบว่าเป็นโมฆะสำหรับค่า Derived ที่ไม่ได้เริ่มต้น (aa2a92)
- เรียกใช้
onEndChanges
ระหว่างการนำองค์ประกอบออก (62cc8c) - แก้ไขเนื้อหาที่ย้ายเป็นองค์ประกอบย่อย (4beb41)
- แก้ไขการติดตายที่อาจเกิดขึ้น (c1a425 และ 8edce0)
- ตอนนี้เครื่องมือปรับแต่งที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกเฉพาะการเรียกไปยัง
withFrameNanos
แทนที่จะบล็อกการเขียนทั้งหมดเมื่อได้รับการแจ้งเตือน ON_STOP ซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดแล้วจะยังคงปรับแต่งใหม่สำหรับการเปลี่ยนแปลงข้อมูล แต่ภาพเคลื่อนไหวหรือผู้โทรรายอื่นๆ ของwithFrameNanos
จะบล็อก (Id9e7f, b/240975572) - เรียกใช้ Callback การปิดใช้งานสำหรับ
LayoutNode
ก่อนทิ้งเอฟเฟกต์ 3784073 - แก้ไข Flag ที่เปลี่ยนแปลงแล้วสำหรับ lambda ที่รีสตาร์ท ea81df9
- แก้ไขการถดถอยของการแก้ไขแบบเรียลไทม์สำหรับ Composable ด้วยโหนด 73fd4d8
- ON_STOP ควรหยุดการออกอากาศนาฬิกาเฟรมชั่วคราวแทนการเขียน ae276f1
- ทำให้ขอบเขต
SnapshotStateObserver
เป็นโมฆะสำหรับสถานะที่ได้มาโดยไม่มีการเปลี่ยนแปลง 84d9b1c - แก้ไขการหยุดทำงานที่อาจเกิดขึ้นเมื่อกำจัดการเรียบเรียง 28761fc
- แก้ไขเนื้อหาที่ย้ายเป็นองค์ประกอบย่อย 92d4156
- แก้ไข Flag ที่เปลี่ยนแปลงสำหรับ lambda ที่รีสตาร์ท (8a03e9)
- เรียกใช้ Callback การปิดใช้งานสำหรับ
LayoutNode
ก่อนทิ้งเอฟเฟกต์ (8b0fa4) - แก้ไข
endToMarker()
เมื่อสิ้นสุดกลุ่มโหนด (d71d980) - ใช้กลุ่ม
SlotWriter
ปัจจุบันเพื่อตรวจสอบการปิดใช้งาน (a0b518b) - นำ
fill
ในSlotTable.moveSlotGapTo()
ออกและย้ายไปปิด (81f9935) - แก้ไขการไม่ถูกต้องที่ขาดหายไปในขณะที่เนื้อหาที่ย้ายได้กำลังย้าย (1d7c024)
- แก้ไขการระบุว่าไม่ถูกต้องในทันทีสำหรับเนื้อหาที่ย้ายได้ (8676618)
การปรับปรุงประสิทธิภาพ
- หลีกเลี่ยงการคำนวณ
readableHash
ในDerivedState
หากไม่มีการแก้ไขสแนปชอต (307102) - การจัดสรรที่ลดลง (I65c09, d7ea77, 727974 และ 445808 )
- การยกเลิกการเขียน
CoroutineScopes
(a55362 และ bd382f) อย่างรวดเร็ว - เขียนทับระเบียนของออบเจ็กต์สถานะด้วยระเบียนสถานะที่ไม่สามารถเข้าถึงได้ (c986960)
- ใช้คอมโพสเซอร์ของขอบเขตที่ถูกต้องเมื่อตรวจพบกลุ่ม (9a5e5b6)
- ใช้
IdentityArraySet
เพื่อจัดเก็บสแนปชอตที่ไม่ถูกต้อง (7f60cca) - ลดการจัดสรรสำหรับการสังเกตการณ์สแนปชอต (5bc535f)
เวอร์ชัน 1.5.0-rc01
26 กรกฎาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-rc01
แล้ว เวอร์ชัน 1.5.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
เลื่อนสถานะที่ได้รับการอ่านซ้ำจนกว่าจะบันทึกการเปลี่ยนแปลง (f38099)
การตรวจสอบที่ไม่บังคับสำหรับแนะนำให้ย้ายข้อมูลการเรียก
mutableStateOf()
ไปยังประเภทเฉพาะที่เกี่ยวข้องสำหรับค่าพื้นฐานที่พร้อมใช้งาน รหัส Lint คือAutoboxingStateCreation
ซึ่งก่อนหน้านี้ ระบบจะเปิดใช้การตรวจสอบนี้โดยค่าเริ่มต้นสำหรับทุกโปรเจ็กต์ หากต้องการดูคำเตือนนี้ในตัวแก้ไขของ Android Studio และเอาต์พุต Lint ของโปรเจ็กต์ ให้เปลี่ยนความรุนแรงจากการให้ข้อมูลเป็นคำเตือน (หรือสูงกว่า) โดยประกาศwarning "AutoboxingStateCreation"
ภายในการกำหนดค่า create.gradle หรือbuild.gradle.kts ของโมดูลตามที่แสดง (I34f7e) ดังนี้android { lint { warning "AutoboxingStateCreation" } ... }
เวอร์ชัน 1.5.0-beta03
28 มิถุนายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-beta03
แล้ว เวอร์ชัน 1.5.0-beta03 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ข้ามการจัดองค์ประกอบย่อยใหม่ที่จะนำออก (Ieeb99, b/254645321)
เวอร์ชัน 1.5.0-beta02
7 มิถุนายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-beta02
แล้ว เวอร์ชัน 1.5.0-beta02 มีการคอมมิตเหล่านี้
การปรับปรุงประสิทธิภาพ
- หลีกเลี่ยงการคำนวณ
readableHash
ในDerivedState
หากไม่มีการแก้ไขสแนปชอต (307102)
เวอร์ชัน 1.5.0-beta01
24 พฤษภาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-beta01
แล้ว เวอร์ชัน 1.5.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำการจัดสรรในการจัดองค์ประกอบใหม่ ภาพเคลื่อนไหวสี และ
AndroidComposeView
(Ib2bfa) ออก - เพิ่มคำอธิบายประกอบ
@StateFactoryMarker
เพื่อทำเครื่องหมายฟังก์ชันที่สร้างสถานะและต้องรวมอยู่ในการเรียกremember
(I64550) - เพิ่ม State และ
MutableState
(fb3d89) เวอร์ชันพื้นฐาน - เพิ่ม
Snapshot.isApplyObserverNotificationPending
(I672a5) แล้ว
แก้ไขข้อบกพร่อง
- การจัดสรรที่ลดลง (I65c09, d7ea77, 727974 และ 445808 )
- ไม่เก็บการอ้างอิงสแนปชอตใน
ComposerImpl
(0206f7) - การยกเลิกการเขียน
CoroutineScopes
(a55362 และ bd382f) อย่างรวดเร็ว - อย่าใช้การจัดแต่ง 2 ครั้ง (f5791b)
- ตรวจสอบว่าเป็นโมฆะสำหรับค่า Derived ที่ไม่ได้เริ่มต้น (aa2a92)
- เรียกใช้
onEndChanges
ระหว่างการนำองค์ประกอบออก (62cc8c) - แก้ไขเนื้อหาที่ย้ายเป็นองค์ประกอบย่อย (4beb41)
- แก้ไขการติดตายที่อาจเกิดขึ้น (c1a425
- ON_STOP ควรหยุดการออกอากาศนาฬิกาเฟรมชั่วคราวแทนการเขียน (f4a2d1)
- แก้ไข Flag ที่เปลี่ยนแปลงสำหรับ lambda ที่รีสตาร์ท (8a03e9)
- เรียกใช้ Callback การปิดใช้งานสำหรับ
LayoutNode
ก่อนทิ้งเอฟเฟกต์ (8b0fa4)
การสนับสนุนภายนอก
- เพิ่ม
Snapshot.isApplyObserverNotificationPending
(I672a5) แล้ว
เวอร์ชัน 1.5.0-alpha04
10 พฤษภาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-alpha04
แล้ว เวอร์ชัน 1.5.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเวอร์ชันพื้นฐานของ
State
API ซึ่งทำให้ติดตามค่า Int, Long, Float และ Double ในออบเจ็กต์State
ได้โดยไม่เสียค่าการทำกล่องอัตโนมัติ ใช้วิธีการจากโรงงานใหม่ เช่นmutableIntState(Int)
,mutableFloatStateOf(Float)
และอื่นๆ เพื่อใช้สิ่งเหล่านี้ (I48e43)
แก้ไขข้อบกพร่อง
เรียกใช้
onEndChanges
ระหว่างการนำองค์ประกอบออก โหนดโฟกัสที่นำออกระหว่างComposition.dispose
กำลังสมัครใช้บริการonEndChanges
เพื่อรีเซ็ตโฟกัส (03d4a47)ตรวจสอบว่าการโมฆะสำหรับค่า Derived ที่ไม่ได้เริ่มต้น สถานะที่ได้รับแต่ละรายการจะเชื่อมโยงกับรายการทรัพยากร Dependency ใน
SnapshotStateObserver
ซึ่งใช้เพื่อทำให้ขอบเขตที่เชื่อมโยงกับสถานะที่ได้มานั้นถูกยกเลิกทุกครั้งที่มีการเปลี่ยนแปลงการอ้างอิง ระบบจะลงทะเบียนการเปลี่ยนแปลงทรัพยากร Dependency ในสแนปชอตล่วงหน้า ซึ่งอาจเกิดขึ้นได้หลังจากอ่านสถานะที่ได้รับแล้ว (เนื่องจากการเรียกใช้Snapshot.notifyObjectsInitialized()
)ตรรกะสังเกตสถานะที่ได้รับก่อนหน้านี้ใน
SnapshotStateObserver
คือการล้างทรัพยากร Dependency เก่า จากนั้นจะอ่านค่าใหม่ ซึ่งส่งผลให้เกิดเงื่อนไขการทำงานแบบโมฆะด้วย ในสถานะล้างแล้ว ซึ่งไม่มีการลงทะเบียนการเลิกใช้ทรัพยากร Dependency ไว้การเปลี่ยนแปลงนี้จะเรียงลำดับสถานะการอ่านและการล้างทรัพยากร Dependency ใหม่เพื่อให้การใช้งานอยู่ในสถานะที่ถูกต้องอยู่เสมอ (c472be6)
เวอร์ชัน 1.5.0-alpha03
19 เมษายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-alpha03
แล้ว เวอร์ชัน 1.5.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้เครื่องมือปรับแต่งที่สร้างขึ้นสำหรับหน้าต่าง Android จะบล็อกเฉพาะการเรียกไปยัง
withFrameNanos
แทนที่จะบล็อกการเขียนทั้งหมดเมื่อได้รับการแจ้งเตือน ON_STOP ซึ่งหมายความว่าหน้าต่างที่เชื่อมโยงกับกิจกรรมที่หยุดแล้วจะยังคงปรับแต่งใหม่สำหรับการเปลี่ยนแปลงข้อมูล แต่ภาพเคลื่อนไหวหรือผู้โทรรายอื่นๆ ของwithFrameNanos
จะบล็อก (Id9e7f, b/240975572)
แก้ไขข้อบกพร่อง
- แก้ไขการติดตายที่อาจเกิดขึ้นในรายการสแนปชอตและแมป 5c1a425
- เรียกใช้ Callback การปิดใช้งานสำหรับ
LayoutNode
ก่อนทิ้งเอฟเฟกต์ 3784073 - แก้ไข Flag ที่เปลี่ยนแปลงแล้วสำหรับ lambda ที่รีสตาร์ท ea81df9
- แก้ไขการถดถอยของการแก้ไขแบบเรียลไทม์สำหรับ Composable ด้วยโหนด 73fd4d8
- ON_STOP ควรหยุดการออกอากาศนาฬิกาเฟรมชั่วคราวแทนการเขียน ae276f1
- ทำให้ขอบเขต
SnapshotStateObserver
เป็นโมฆะสำหรับสถานะที่ได้มาโดยไม่มีการเปลี่ยนแปลง 84d9b1c - แก้ไขการหยุดทำงานที่อาจเกิดขึ้นเมื่อกำจัดการเรียบเรียง 28761fc
- แก้ไขเนื้อหาที่ย้ายเป็นองค์ประกอบย่อย 92d4156
เวอร์ชัน 1.5.0-alpha02
5 เมษายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-alpha02
แล้ว เวอร์ชัน 1.5.0-alpha02 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ตอนนี้โอเปอเรเตอร์
getValue
ของ Kotlin สามารถเขียนได้ด้วย (f174f6e)
แก้ไขข้อบกพร่อง ปรับปรุงประสิทธิภาพ
- เขียนทับระเบียนของออบเจ็กต์สถานะด้วยระเบียนสถานะที่ไม่สามารถเข้าถึงได้ (c986960)
- ใช้คอมโพสเซอร์ของขอบเขตที่ถูกต้องเมื่อตรวจพบกลุ่ม (9a5e5b6)
- แก้ไข
endToMarker()
เมื่อสิ้นสุดกลุ่มโหนด (d71d980) - ใช้กลุ่ม
SlotWriter
ปัจจุบันเพื่อตรวจสอบการปิดใช้งาน (a0b518b) - ใช้
IdentityArraySet
เพื่อจัดเก็บสแนปชอตที่ไม่ถูกต้อง (7f60cca) - นำ
fill
ในSlotTable.moveSlotGapTo()
ออกและย้ายไปปิด (81f9935) - แก้ไขการไม่ถูกต้องที่ขาดหายไปในขณะที่เนื้อหาที่ย้ายได้กำลังย้าย (1d7c024)
- แก้ไขการระบุว่าไม่ถูกต้องในทันทีสำหรับเนื้อหาที่ย้ายได้ (8676618)
- ลดการจัดสรรสำหรับการสังเกตการณ์สแนปชอต (5bc535f)
เวอร์ชัน 1.5.0-alpha01
22 มีนาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.5.0-alpha01
แล้ว เวอร์ชัน 1.5.0-alpha01 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- เพิ่ม
Modifier.Node#coroutineScope
เพื่ออนุญาตให้Modifier.Nodes
เรียกใช้โครูทีน (I76ef9) - อนุญาตให้
Modifier.Nodes
อ่านCompositionLocals
ด้วยการใช้อินเทอร์เฟซCompositionLocalConsumerModifierNode
(Ib44df)
เวอร์ชัน 1.4
เวอร์ชัน 1.4.3
3 พฤษภาคม 2023
เผยแพร่ androidx.compose.runtime:runtime-*:1.4.3
แล้วโดยไม่มีการเปลี่ยนแปลง
เวอร์ชัน 1.4.2
19 เมษายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.2
แล้ว เวอร์ชัน 1.4.2 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
แก้ไขการติดตายที่อาจเกิดขึ้นในรายการสแนปชอตและแมป 2eb6570
การเพิ่มเนื้อหาลงใน
SnapshotStateList
หรือSnapshotStateMap
อาจพบการติดตายหากการแก้ไขเกิดขึ้นพร้อมกันกับการเขียนบันทึกสถานะโดยตรง การเปลี่ยนแปลงนี้เกิดขึ้นจาก 93fcae828b ซึ่งใช้การเขียนโดยตรงเพื่อปล่อยระเบียนที่ไม่ได้ใช้อย่างมีนัยสำคัญตอนนี้การล็อกมีการจัดลำดับแบบไม่มีการพยายามล็อกสแนปชอตเมื่อมีการเก็บแผนที่หรือรายการล็อก
เวอร์ชัน 1.4.1
5 เมษายน 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.1
แล้ว เวอร์ชัน 1.4.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
endToMarker()
เมื่อสิ้นสุดกลุ่มโหนด D71d980
เวอร์ชัน 1.4.0
22 มีนาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.0
แล้ว เวอร์ชัน 1.4.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.3.0
- ใช้ค่าเริ่มต้นจาก
LiveData
สำหรับองค์ประกอบแรก 3680e25 - เพิ่ม
ComposeNodeLifecycleCallback
เพื่อดูวงจรการเขียนของโหนด 8b6a258 - เพิ่มพร็อพเพอร์ตี้
parameterTypes
ลงในComposableMethod
7b6c7ad
แก้ไขข้อบกพร่องและ การปรับปรุงประสิทธิภาพ
- ล้างดัชนีขอบเขตทั้ง 2 รายการใน
SnapshotStateObserver
29f4a3e - เพิ่มกลุ่มที่ต้องใช้ในร่างกายของแลมบ์ดาที่ข้ามไม่ได้ 7d06752
- ปรับปรุงลักษณะการอ้างอิงหน่วยความจำของสแนปชอต 93fcae8
- นำชกมวยออกในการค้นหาองค์ประกอบภายใน 0875717
- ใช้คีย์ที่ถูกต้องสำหรับกลุ่มโหนดที่นำกลับมาใช้ไม่ได้ 6388d8d
- ป้องกัน
SnapshotStateObserver
ไม่ให้เกิดซ้ำและเกิดขึ้นพร้อมกัน 98cb6ba - เพิ่มการตรวจสอบขอบเขตดัชนีการตรวจสอบใน "get" ของ
IdentityArraySet
เมธอด 35a77d3 - อัปเดตโมดูลการเขียนเพื่อใช้ส่วนขยาย
ViewTreeLifecycleOwner
21c2122 - ส่งการแจ้งเตือนการนำไปใช้หลังจากผู้ออกแบบเฟรมเสร็จแล้ว 98F2641
- แก้ไขข้อขัดข้องของดัชนีนอกขอบเขตเมื่อยกเลิก Recomposer 8f8656f
- บังคับให้เขียนใหม่เสมอหากผู้ให้บริการการเรียบเรียงระดับบนสุดมีการเปลี่ยนแปลง 9526fcc
- ความคลาดเคลื่อนของรีคอมโพสเซอร์สำหรับงานที่ยกเลิกแล้ว a55f7ed
- ปรับปรุงการจัดการที่ไม่ถูกต้องสำหรับคอมโพสเซอร์จำนวนมาก 9b7ed67
- แก้ไขการสร้างกลุ่มปิดสำหรับการคืนสินค้าที่ไม่ใช่ในพื้นที่ b6f590c
เวอร์ชัน 1.4.0-rc01
8 มีนาคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-rc01
แล้ว เวอร์ชัน 1.4.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
เวอร์ชัน 1.4.0-beta02
22 กุมภาพันธ์ 2023
ปล่อย androidx.compose.runtime:runtime:1.4.0-beta02
และ androidx.compose.runtime:runtime-saveable:1.4.0-beta02
แล้ว เวอร์ชัน 1.4.0-beta02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.4.0-beta01
8 กุมภาพันธ์ 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-beta01
แล้ว เวอร์ชัน 1.4.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
ComposeNodeLifecycleCallback
แล้วซึ่งช่วยให้สังเกตวงจรชีวิตของโหนด Compose (I3731b) - เพิ่ม
@TestOnly
ไปยังComposer.disableSourceInformation()
แล้ว เนื่องจากฟังก์ชันนี้จะปลอดภัยสำหรับการเรียกใช้ในการทดสอบเท่านั้น (I896c8)
แก้ไขข้อบกพร่อง
- นำการชกมวยออกในการค้นหาภายในการเรียบเรียงเพลง (62f66a)
- ปรับปรุงลักษณะการอ้างอิงหน่วยความจำของสถานะสแนปชอต (dfb451)
เวอร์ชัน 1.4.0-alpha05
25 มกราคม 2023
ปล่อย androidx.compose.runtime:runtime:1.4.0-alpha05
และ androidx.compose.runtime:runtime-saveable:1.4.0-alpha05
แล้ว เวอร์ชัน 1.4.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ประเภท/ความสามารถในการเว้นว่างที่มากขึ้นของฟังก์ชันในบรรทัด/เลิกใช้งานซึ่งซ่อน (I24f91)
เวอร์ชัน 1.4.0-alpha04
11 มกราคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-alpha04
แล้ว เวอร์ชัน 1.4.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
TestMonotonicFrameClock
ใช้คำอธิบายประกอบการทดสอบที่ถูกต้อง (I95c9e)
แก้ไขข้อบกพร่อง
- ป้องกัน
SnapshotStateObserver
ไม่ให้เกิดซ้ำและเกิดขึ้นพร้อมกัน (d902fb)
เวอร์ชัน 1.4.0-alpha03
7 ธันวาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-alpha03
แล้ว เวอร์ชัน 1.4.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเมธอดสาธารณะใหม่ไปยังคลาส
ComposableMethod
ที่คล้ายกับjava.lang.reflect.Method#getParameterTypes()
(Iab0c3)
แก้ไขข้อบกพร่อง
- ตอนนี้ระบบจะส่งการแจ้งเตือนการใช้สแนปชอตหลังจาก
Recomposer
ใช้การเปลี่ยนแปลงเสร็จสิ้น (Iad6c0, b/222093277)
เวอร์ชัน 1.4.0-alpha02
9 พฤศจิกายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-alpha02
แล้ว เวอร์ชัน 1.4.0-alpha02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.4.0-alpha01
24 ตุลาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.4.0-alpha01
แล้ว เวอร์ชัน 1.4.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้
SnapshotStateList
และSnapshotStateMap
มีการใช้toList()
และtoMap()
อย่างชัดแจ้งด้วยความเคารพ วิธีการเหล่านี้จะแสดงเนื้อหาปัจจุบันโดยไม่คัดลอกรูปแบบการคัดลอก เนื่องจากจะแสดงข้อมูลที่เปลี่ยนแปลงภายในที่เปลี่ยนแปลงไม่ได้ซึ่งใช้ในการจัดเก็บเนื้อหา คุณจะใช้ค่านี้เพื่อสร้างโฟลว์ของค่าโดยใช้snapshotFlow
โดยไม่ต้องคัดลอกข้อมูล เป็นต้น (Ica2bd)
เวอร์ชัน 1.3
เวอร์ชัน 1.3.3
11 มกราคม 2023
ปล่อย androidx.compose.runtime:runtime-*:1.3.3
แล้ว เวอร์ชัน 1.3.3 มีคอมมิตเหล่านี้
- ไม่มีการเปลี่ยนแปลงตั้งแต่ 1.3.2
เวอร์ชัน 1.3.2
7 ธันวาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.2
แล้ว เวอร์ชัน 1.3.2 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- อัปเดตให้รองรับ androidx.compose.ui 1.3.2 แล้ว
เวอร์ชัน 1.3.1
9 พฤศจิกายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.1
แล้ว เวอร์ชัน 1.3.1 มีคอมมิตเหล่านี้
เวอร์ชัน 1.3.0
24 ตุลาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0
แล้ว เวอร์ชัน 1.3.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.2.0
การจัดการข้อยกเว้น / การสนับสนุนการแก้ไขแบบเรียลไทม์
- มีการเพิ่ม API เพื่อให้จัดการข้อยกเว้นในระหว่างการแต่งเพลงได้ดียิ่งขึ้น
- การจัดการข้อผิดพลาดเกี่ยวกับการเรียบเรียงสำหรับการรีโหลดแบบฮอต
- จัดการข้อผิดพลาดในการแก้ไขแบบเรียลไทม์ขณะบันทึก/กู้คืน
การติดตามการเรียบเรียง
- มีการเพิ่ม API การติดตามรันไทม์เพื่อรองรับเครื่องมือการติดตามองค์ประกอบใหม่
- สร้างการโทรเริ่มต้น/สิ้นสุดของเหตุการณ์การติดตามที่ประกอบกันได้
- เพิ่ม ComposerKt.traceEventStart(Int, String) แล้ว
Composable Reflection API
- มีการเพิ่ม API
ComposableMethod
ใหม่เพื่อให้ API ที่ประกอบขึ้นได้อิงตามการสะท้อนได้อย่างน่าเชื่อถือยิ่งขึ้น - ย้าย invokeComposable เพื่อเขียนรันไทม์
- ปรับปรุง API เพื่อเรียกใช้ Method แบบ Composable
การแก้ไขรันไทม์
- แก้ไขการทดสอบช่วงที่ผิดพลาดสำหรับตารางช่องตรวจหาตัวทำเครื่องหมาย
- อนุญาตให้ย้ายเนื้อหาที่ย้ายได้เข้าและออกจาก SubcomposeLayout
- แก้ไขการย้ายเนื้อหาไปยังเนื้อหาใหม่ขององค์ประกอบย่อย
ระบบสแนปชอต
- ระบบสแนปชอตได้รับการปรับปรุงหลายด้านเกี่ยวกับการจัดการหน่วยความจำ ประสิทธิภาพ และความถูกต้อง
- การนำขอบเขตออกอย่างมีประสิทธิภาพใน SnapshotStateObserver
- ลบสแนปชอตที่ฝังซึ่งสร้างจากสแนปชอตโปร่งใส
- แก้ไขเงื่อนไขการแข่งขันเมื่ออ่านสถานะจากภาพรวมทั่วโลก
- รองรับ DerivedState ใน SnapshotStateObserver
- ป้องกันไม่ให้นำสถานะที่ได้รับออกจากการเรียบเรียงเมื่อมีการอ่านในขอบเขตอื่นๆ
- ใช้ IdentityArrayMap แทน HashMap ใน DerivedState
- อัปเดตผู้สังเกตการณ์สถานะที่ได้รับให้ใช้เวกเตอร์ที่เปลี่ยนแปลงได้
- อัปเดตการล้างข้อมูลสถานะ SnapshotStateObserver
- แทนที่ SnapshotStateObserver.invalidated ด้วย ArraySet
- แก้ไขเงื่อนไขการแข่งขันเมื่ออ่านสถานะจากภาพรวมทั่วโลก
- แก้ไขการใช้ระเบียนที่ไม่มีอัปเดตในการคำนวณแฮช DerivedState
- แก้ไขเงื่อนไขการแข่งขันเมื่อเข้าใกล้สแนปชอตทั่วโลก
- เร่งความเร็วในการล้างข้อมูลการสังเกตการณ์ใน SnapshotStateObserver
เวอร์ชัน 1.3.0-rc01
5 ตุลาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-rc01
แล้ว เวอร์ชัน 1.3.0-rc01 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
ArrayIndexOutOfBoundsException
คงที่ที่มาจากตารางสล็อต (b/249076084)
เวอร์ชัน 1.3.0-beta03
21 กันยายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-beta03
แล้ว เวอร์ชัน 1.3.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
- พารามิเตอร์เป็น
remember
และrememberCoroutineScope
ซึ่งเปลี่ยนเป็นcrossinline
การดำเนินการนี้จะรายงานข้อผิดพลาดสำหรับการคืนสินค้าล่วงหน้าแทนที่จะอนุญาตให้มีการคืนสินค้าก่อนกำหนด ซึ่งจะทำให้มีการรายงานข้อผิดพลาดภายในในภายหลัง - การเปลี่ยนแปลงนี้อาจทำให้เกิดข้อผิดพลาดของคอมไพเลอร์ใหม่ซึ่งจะได้รับการรายงานที่ทำให้มีการนำการคืนสินค้านอกพื้นที่ออกจาก lambda ที่ส่งไปยังฟังก์ชันเหล่านี้ (Ibea62)
เวอร์ชัน 1.3.0-beta02
7 กันยายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-beta02
แล้ว เวอร์ชัน 1.3.0-beta02 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- API ที่อัปเดต (I64ca0)
เวอร์ชัน 1.3.0-beta01
24 สิงหาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-beta01
แล้ว เวอร์ชัน 1.3.0-beta01 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มเมธอด
find
ในCompositionData
แล้ว เพื่อให้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ที่ใช้ API นี้ค้นหากลุ่มย่อยของการเรียบเรียงได้อย่างรวดเร็วโดยใช้ข้อมูลประจำตัว (I5794f)
เวอร์ชัน 1.3.0-alpha03
10 สิงหาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-alpha03
แล้ว เวอร์ชัน 1.3.0-alpha03 มีคอมมิตเหล่านี้
เวอร์ชัน 1.3.0-alpha02
27 กรกฎาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-alpha02
แล้ว เวอร์ชัน 1.3.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
ComposerKt.traceEventStart(Int, String)
อีกครั้งสำหรับความเข้ากันได้แบบย้อนหลัง (I6e6de)
เวอร์ชัน 1.3.0-alpha01
29 มิถุนายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.3.0-alpha01
แล้ว เวอร์ชัน 1.3.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- กำลังย้ายฟังก์ชันการทำงานของยูทิลิตีไปที่รันไทม์ (I4f729)
เวอร์ชัน 1.2
เวอร์ชัน 1.2.1
10 สิงหาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.1
แล้ว เวอร์ชัน 1.2.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขการรั่วไหลของหน่วยความจำ: กำจัดสแนปชอตที่ซ้อนกันซึ่งสร้างจากสแนปชอตโปร่งใส b/239603305
เวอร์ชัน 1.2.0
27 กรกฎาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0
แล้ว เวอร์ชัน 1.2.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่วันที่ 1.1.0
รันไทม์ของ Compose มีฟีเจอร์จำนวนหนึ่งที่เปิดตัวในเวอร์ชัน 1.2.0 พร้อมกับการแก้ไขข้อบกพร่องเกี่ยวกับความเสถียรอีกหลายอย่าง ฟีเจอร์ใหม่ที่สำคัญที่สุดคือการเปิดตัว
movableContentOf
API ซึ่งใช้เพื่อเปิดใช้ UX ที่ซับซ้อนได้ เช่น การเปลี่ยนองค์ประกอบที่แชร์movableContentOf
API จะแปลง lambda ที่ประกอบกันได้เป็น lambda ที่ย้ายสถานะดังกล่าวและโหนดที่เกี่ยวข้องไปยังตำแหน่งใหม่ที่มีการเรียกใช้ เมื่อการเรียกก่อนหน้าออกจากการเรียบเรียง สถานะจะยังคงอยู่ชั่วคราวและหากมีการเรียก lambda ใหม่เข้ามาในการเรียบเรียง ระบบจะย้ายสถานะและโหนดที่เกี่ยวข้องไปยังตำแหน่งของการเรียกใหม่ หากไม่ได้เพิ่มการเรียกใหม่ สถานะจะถูกนำออกอย่างถาวรและอย่าลืมว่าผู้สังเกตการณ์จะได้รับการแจ้งเตือนหากมีการเรียกใช้
movableContentOf
lambda หลายครั้งในการเรียบเรียงเดียวกัน ระบบจะสร้างสถานะและโหนดใหม่สําหรับการเรียกใช้แต่ละครั้ง และเมื่อการเรียกใช้ออกจากการเขียนและการเรียกใหม่ สถานะจะถูกย้ายจากการเรียกใช้ที่ออกครั้งแรกไปเป็นการเรียกใช้ป้อนเข้าตามลำดับที่ถูกเรียก สถานะทั้งหมดที่ไม่ได้รับการอ้างสิทธิ์จากการโทรใหม่จะถูกนำออกอย่างถาวรนอกเหนือจากฟีเจอร์นี้และฟีเจอร์ใหม่อื่นๆ อีก 2-3 รายการต้องใช้เวลามากมายในการทำให้ระบบรันไทม์และสถานะสแนปชอตมีความเสถียร หน่วยความจำรั่วไหลจำนวนมากถูกนำออกและเพิ่มประสิทธิภาพเส้นทางโค้ด
ดูรายการสรุปการเปลี่ยนแปลงได้ที่ด้านล่าง
ฟีเจอร์ใหม่ใน 1.2
- เพิ่มสแนปชอตแบบทดลองที่ไม่ปลอดภัยEnter/ออก
- เพิ่ม Snapshot.asContextElement ทดลอง API
- แนะนำ Snapshot.withoutReadObservation
- อนุญาตให้สถานะย้ายภายในการเรียบเรียง
- การติดตามการจัดองค์ประกอบใหม่ใน Compose
ประสิทธิภาพใน 1.2
แก้ไขข้อบกพร่องใน 1.2
- นำข้อมูลการติดตามออกจากขอบเขตการกำหนดรุ่นใหม่
- ป้องกันไม่ให้นำสถานะที่ได้รับออกจากการเรียบเรียงเมื่อมีการอ่านในขอบเขตอื่นๆ
- ใช้ removeScope() ที่มีประสิทธิภาพมากขึ้นใน SnapshotStateObserver
- ล้างทรัพยากร Dependency ของสถานะที่ได้รับในการเรียบเรียง
- แก้ไขการเปลี่ยนแปลง CurrentCompositeKeyHash หลังการจัดองค์ประกอบภายในใหม่ภายในเนื้อหาที่ย้ายได้
- ทำความสะอาดองค์ประกอบที่ใช้งานไม่ได้ระหว่างการกำจัด
- แก้ไขสถานะ "ดึงมา" ที่อ่านแล้วระหว่างการจัดองค์ประกอบใหม่
- แก้ไขการรั่วไหลของหน่วยความจำเมื่อสังเกตออบเจ็กต์สถานะที่ได้รับ
- แก้ไขคีย์แฮชผสม movableContent ให้สอดคล้องกัน
- แก้ไขมุมกรณีที่นักประพันธ์เพลงขัดข้อง
- ตรวจสอบว่าการบังคับให้ใช้การไม่ได้สำหรับการจัดองค์ประกอบกลุ่มใหม่
- แก้ไขข้อบกพร่องเมื่อมีการคืนค่าการจดจำ "สามารถบันทึกได้ด้วยอินพุต" ในลำดับที่ไม่ถูกต้อง
เวอร์ชัน 1.2.0-rc03
29 มิถุนายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-rc03
แล้ว เวอร์ชัน 1.2.0-rc03 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- ก่อนหน้านี้ การสังเกตการณ์สถานะที่ได้รับได้ถูกนำออกจากขอบเขตและการเรียบเรียงใหม่อย่างไม่มีเงื่อนไขร่วมกัน ซึ่งทำให้ขอบเขตอื่นๆ ที่อาจยังสังเกตการณ์สถานะที่ได้รับมาเสียหาย การเปลี่ยนแปลงนี้จะนำอินสแตนซ์สถานะที่ได้รับมาออกหากขอบเขตอื่นๆ ไม่สังเกต (b/236618362)
เวอร์ชัน 1.2.0-rc02
22 มิถุนายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-rc02
แล้ว เวอร์ชัน 1.2.0-rc02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-rc01
15 มิถุนายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-rc01
แล้ว เวอร์ชัน 1.2.0-rc01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้อินเทอร์เฟซในไลบรารีการเขียนที่สร้างขึ้นโดยใช้เมธอดอินเทอร์เฟซเริ่มต้น jdk8 (I5bcf1)
เวอร์ชัน 1.2.0-beta03
1 มิถุนายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-beta03
แล้ว เวอร์ชัน 1.2.0-beta03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-beta02
18 พฤษภาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-beta02
แล้ว เวอร์ชัน 1.2.0-beta02 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-beta01
11 พฤษภาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-beta01
แล้ว เวอร์ชัน 1.2.0-beta01 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- นี่เป็นรุ่นเบต้ารุ่นแรกของ 1.2!
การเปลี่ยนแปลง API
- เพิ่ม
Snapshot.unsafeEnter/unsafeLeave
เวอร์ชันทดลอง (I108f3) - เพิ่ม API
Snapshot.asContextElement()
แบบทดลอง (Iff072) - คำอธิบายประกอบ
@ComposableTarget
และคำอธิบายประกอบที่@ComposableTargetMarker
ทำเครื่องหมายสามารถใช้ที่ขอบเขตของไฟล์ได้แล้วโดยใช้คำนำหน้า@file
การใช้คำอธิบายประกอบเป้าหมายที่ขอบเขตของไฟล์จะทำให้คอมไพเลอร์ถือว่าฟังก์ชันที่ประกอบได้ทั้งหมดในไฟล์มีจุดประสงค์เพื่อกำหนดเป้าหมายไปยังเครื่องมือที่เกี่ยวข้อง ตัวอย่างเช่น การใช้@file:UiComposable
จะประกาศว่าฟังก์ชัน@Composable
ทั้งหมดกำหนดเป้าหมายไปที่แอปพลิเคชัน UI ของ Compose ฟังก์ชันที่ต้องการกำหนดเป้าหมายไปยังเครื่องมืออื่นต้องระบุคำอธิบายประกอบของตัวทำเครื่องหมายเป้าหมายสำหรับแอปที่ต้องการอย่างชัดแจ้ง (I40804)
เวอร์ชัน 1.2.0-alpha08
20 เมษายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha08
แล้ว เวอร์ชัน 1.2.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม
TracingInProgress
ในอินเทอร์เฟซCompositionTracer
แล้ว (Ic6f12) - เพิ่ม
recomposeScopeIdentity
ลงในคอมโพสเซอร์ (I0c873) - API การติดตามแบบจำกัด (Composer.setTracer) ไปยัง
OptIn(InternalComposeTracingApi)
(I9187f) - เพิ่ม
ResuableContentHost
ซึ่งช่วยให้ควบคุมอายุการใช้งานของสถานะที่สร้างขึ้นสำหรับเนื้อหาที่นำมาใช้ใหม่ได้ที่ดียิ่งขึ้น ตัวอย่างเช่น หากไม่ได้ใช้งานองค์ประกอบย่อยชั่วคราว ระบบอาจปิดใช้งานเนื้อหา ซึ่งจะทำให้ระบบลืมการทริกเกอร์สถานะที่จดจำทั้งหมดในการเรียบเรียง เช่น เอฟเฟกต์แบบใช้ครั้งเดียวทั้งหมด (I2c0f2, b/220322704)
เวอร์ชัน 1.2.0-alpha07
6 เมษายน 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha07
แล้ว เวอร์ชัน 1.2.0-alpha07 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มฟังก์ชันใหม่
Snapshot.withoutReadObservation { ... }
แล้ว อนุญาตให้ผู้ใช้เรียกใช้ lambda ที่ส่งผ่านได้โดยไม่ต้องสมัครรับการเปลี่ยนแปลงค่าสถานะที่อ่านระหว่างการบล็อกนี้ การใช้งานน่าจะมีประโยชน์ในกรณีที่ต้องการใช้ประโยชน์จากการเขียน/อ่านที่ปลอดภัยของเทรดในสแนปชอต แต่อยากอ่านค่าได้โดยไม่ทําให้มีการจัดองค์ประกอบใหม่หรือวัดอีกครั้งโดยไม่จำเป็น (I9f365, b/214054486)
เวอร์ชัน 1.2.0-alpha06
23 มีนาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha06
แล้ว เวอร์ชัน 1.2.0-alpha06 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-alpha05
9 มีนาคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha05
แล้ว เวอร์ชัน 1.2.0-alpha05 มีคอมมิตเหล่านี้
การสนับสนุนภายนอก
- อัปเดตเพื่อใช้ Kotlinx coroutines 1.6.0 (I3366d)
เวอร์ชัน 1.2.0-alpha04
23 กุมภาพันธ์ 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha04
แล้ว เวอร์ชัน 1.2.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่ม
ComposableTarget
,ComposableTargetMarker
และComposableOpenTarget
ที่อนุญาตการรายงานเวลาคอมไพล์เมื่อ ฟังก์ชันที่ประกอบกันได้เรียกว่าการกำหนดเป้าหมายไปยังแอปพลิเคชันซึ่งไม่ใช่ ที่ออกแบบมาเพื่อใช้ในกรณีส่วนใหญ่ คำอธิบายประกอบสามารถอนุมานได้โดยผู้ประพันธ์ ปลั๊กอินคอมไพเลอร์ ดังนั้นการใช้คำอธิบายประกอบเหล่านี้โดยตรงควร หายาก กรณีที่ไม่สามารถอนุมานได้ ได้แก่ การสร้างและ โดยใช้ฟังก์ชัน Composable เชิงนามธรรมที่นำไปใช้ที่กำหนดเอง (เช่น เมธอดของอินเทอร์เฟซ) ฟิลด์ หรือตัวแปรร่วมที่ lambda แบบประกอบได้ (การอนุมานตัวแปรและพารามิเตอร์ในเครื่อง) หรือเมื่อใช้
ComposeNode
หรือฟังก์ชัน Composable ที่เกี่ยวข้องสำหรับผู้ใช้ที่กำหนดเอง ฟังก์ชันที่ประกอบกันได้ซึ่งเรียกใช้
ComposeNode
หรือReusableComposeNode
ต้องเพิ่ม คำอธิบายประกอบCompoableTarget
สำหรับฟังก์ชันและฟังก์ชัน ประเภทพารามิเตอร์ lambda ที่ประกอบกันได้ อย่างไรก็ตาม เราขอแนะนำว่า เพื่อสร้างคำอธิบายประกอบที่มีคำอธิบายประกอบComposableTargetMarker
จากนั้นจะมีการใช้คำอธิบายประกอบที่ทำเครื่องหมายไว้ แทนComposableTarget
โดยตรง คำอธิบายประกอบที่ประกอบกันได้ ทำเครื่องหมายด้วยComposableTargetMarker
เทียบเท่ากับComposbleTarget
ด้วยชื่อที่สมบูรณ์ในแอตทริบิวต์ เป็นพารามิเตอร์ที่เกี่ยวข้อง ตัวอย่างเช่นComposableTargetMarker
ดูanroidx.compose.ui.UiComposable
(I38f11)
เวอร์ชัน 1.2.0-alpha03
9 กุมภาพันธ์ 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha03
แล้ว เวอร์ชัน 1.2.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
เพิ่ม
movableContentOf
ซึ่งแปลง Composable แล้ว แลมบ์ดาลงในแลมบ์ดาที่ย้ายสถานะ และโหนดที่เกี่ยวข้อง ไปยังตำแหน่งใหม่ที่เรียกว่าตำแหน่งใหม่ เมื่อสายก่อนหน้าสิ้นสุดลง การเรียบเรียง สถานะจะเก็บไว้ชั่วคราว และหากมีการการเรียกใหม่ แลมบ์ดาจะเข้าสู่การเรียบเรียง จากนั้นเข้าสู่รัฐ และ จะย้ายไปยังตำแหน่งของการเรียกใหม่ หากไม่มีสายใหม่ เพิ่มรัฐนั้น ถูกนำออกอย่างถาวร และอย่าลืมว่าผู้สังเกตการณ์ การแจ้งเตือนถ้ามีการเรียก
movableContentOf
แลมบ์ดาหลายครั้งพร้อมกัน องค์ประกอบ สถานะใหม่ และโหนดจะถูกสร้างสำหรับการเรียกแต่ละครั้ง จะออกจากองค์ประกอบและโทรออกใหม่ สถานะจะถูกย้าย ตั้งแต่การวางสายแรกไปจนถึงการโทรเข้าตามลำดับ จะถูกเรียก สถานะทั้งหมดที่ไม่ได้อ้างสิทธิ์โดยการเรียกใหม่จะถูกนำออก อย่างถาวร (Ib4850)เพิ่ม API การติดตามในการเรียบเรียงเพื่อให้เครื่องมือสามารถ จะให้การติดตามโดยละเอียดมากขึ้นของฟังก์ชันที่ประกอบกันได้ ผู้คอมไพเลอร์ จะสร้างการเรียกไปยัง Tracing API ซึ่งมีแหล่งที่มา (Ib0eb5)
วิธีนำการโทรเหล่านี้และแหล่งที่มาที่เกี่ยวข้องออก จากบิลด์ที่เผยแพร่ ให้เพิ่มกฎ Proguard ต่อไปนี้
-assumenosideeffects public class androidx.compose.runtime.ComposerKt { boolean isTraceInProgress(); void traceEventStart(int,java.lang.String); void traceEventEnd(); }
เพิ่ม
InternalComposeScope
ซึ่งช่วยให้เครื่องมือมีความสามารถ เพื่อระบุ Composable ระหว่างการจัดองค์ประกอบใหม่ (I07a3f)
เวอร์ชัน 1.2.0-alpha02
26 มกราคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha02
แล้ว เวอร์ชัน 1.2.0-alpha02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.2.0-alpha01
12 มกราคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.2.0-alpha01
แล้ว เวอร์ชัน 1.2.0-alpha01 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มช่อง
identity
ในCompositionData
เพื่อสร้างแล้ว รหัสตัวแปรในตัวตรวจสอบการออกแบบ (Ic116e)
การอัปเดตการขึ้นต่อกัน
- ตอนนี้ขึ้นอยู่กับ
1.6.10
ของ Kotlin
เวอร์ชัน 1.1
เวอร์ชัน 1.1.1
23 กุมภาพันธ์ 2022
ปล่อย androidx.compose.runtime:runtime-*:1.1.1
แล้ว เวอร์ชัน 1.1.1 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไข
NullPointerException
ที่androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList
(aosp/1947059, b/206677462) - แก้ไขข้อขัดข้องที่เกิดจากเนื้อหาในคลิปบอร์ดขณะอ่านจาก คลิปบอร์ดใน Android (I06020, b/197769306)
- RTL แบบคงที่ใน
LazyVerticalGrid
(aosp/1931080, b/207510535)
เวอร์ชัน 1.1.0
9 กุมภาพันธ์ 2022
ปล่อย androidx.compose.runtime:runtime-*:1.1.0
แล้ว เวอร์ชัน 1.1.0 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่สำคัญตั้งแต่เวอร์ชัน 1.0.0
- การรองรับที่เสถียรสําหรับเอฟเฟกต์การเลื่อนเกินของ Android 12
- การปรับปรุงการปรับขนาดเป้าหมายการสัมผัส
- โปรดทราบว่าในส่วน Compose 1.0 คอมโพเนนต์ Material จะขยายพื้นที่เลย์เอาต์เพื่อให้เป็นไปตามหลักเกณฑ์การช่วยเหลือพิเศษของ Material สำหรับขนาดเป้าหมายการสัมผัส ตัวอย่างเช่น เป้าหมายการสัมผัสปุ่มจะขยายเป็นขนาดต่ำสุดที่
48x48dp
แม้ว่าคุณจะตั้งค่าขนาดของปุ่มให้เล็กลงก็ตาม การทำเช่นนี้ช่วยจัดองค์ประกอบใน Compose ให้เหมือนกับคอมโพเนนต์ดีไซน์ Material ซึ่งมีลักษณะการทำงานที่สอดคล้องกันหากใช้มุมมองและการเขียนผสมกัน การเปลี่ยนแปลงนี้ยังช่วยให้มั่นใจว่าเมื่อคุณสร้าง UI โดยใช้คอมโพเนนต์ Compose Material แล้ว จะเป็นไปตามข้อกำหนดขั้นต่ำสำหรับการช่วยเหลือพิเศษเป้าหมายการสัมผัส - การสนับสนุนเสถียรสำหรับรางนำทาง
- เปลี่ยน API ที่ทดลองใช้ก่อนหน้านี้จำนวนหนึ่งไปใช้เวอร์ชันเสถียร
- การรองรับสำหรับ Kotlin เวอร์ชันใหม่
เวอร์ชัน 1.1.0-rc03
26 มกราคม 2022
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-rc03
แล้ว เวอร์ชัน 1.1.0-rc03 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- อัปเดตเพื่อรองรับเนื้อหา Compose
1.1.0-rc03
แล้ว
เวอร์ชัน 1.1.0-rc01
15 ธันวาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-rc01
แล้ว เวอร์ชัน 1.1.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-beta04
1 ธันวาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-beta04
แล้ว เวอร์ชัน 1.1.0-beta04 มีการคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- อัปเดตให้เข้ากันได้กับ Kotlin
1.6.0
เวอร์ชัน 1.1.0-beta03
17 พฤศจิกายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-beta03
แล้ว เวอร์ชัน 1.1.0-beta03 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-beta02
3 พฤศจิกายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-beta02
แล้ว เวอร์ชัน 1.1.0-beta02 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- โค้ดสแนปชอตถูกแบ่งออกเป็นหลายๆ ไฟล์ อยู่ในคลาส JVM เดียวกัน (Ic6c98)
เวอร์ชัน 1.1.0-beta01
27 ตุลาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-beta01
แล้ว เวอร์ชัน 1.1.0-beta01 มีการคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha06
13 ตุลาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha06
แล้ว เวอร์ชัน 1.1.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
InternalCompilerApi
ออกจากเมธอด Composer ที่ จำเป็นต้องเรียกข้ามโมดูล (I1aa0b) Recomposer.state
เลิกใช้งานแล้วและแทนที่ด้วยRecomposer.currentState
เพื่อเปลี่ยนประเภทเป็น StateFlow (Ic2ab3, b/197773820)
เวอร์ชัน 1.1.0-alpha05
29 กันยายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha05
แล้ว เวอร์ชัน 1.1.0-alpha05 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha04
15 กันยายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha04
แล้ว เวอร์ชัน 1.1.0-alpha04 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha03
1 กันยายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha03
แล้ว เวอร์ชัน 1.1.0-alpha03 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
- ขณะนี้คอมไพเลอร์ Compose สนับสนุนรันไทม์ของ Compose เวอร์ชันเก่า (1.0) ก่อนหน้าการเปลี่ยนแปลงนี้ คอมไพเลอร์ Compose สามารถทำงานร่วมกับรันไทม์ของ Compose ในเวอร์ชันเดียวกันหรือสูงกว่าเท่านั้น หลังจากการเปลี่ยนแปลงนี้ คอมไพเลอร์ Compose จะสามารถทำงานร่วมกับรันไทม์ของ Compose เวอร์ชันเก่า (1.0) (aosp/1796968)
- อัปเดต Compose
1.1.0-alpha03
เพื่อใช้ Kotlin1.5.30
แล้ว (I74545)
เวอร์ชัน 1.1.0-alpha02
18 สิงหาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha02
แล้ว เวอร์ชัน 1.1.0-alpha02 มีคอมมิตเหล่านี้
เวอร์ชัน 1.1.0-alpha01
4 สิงหาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.1.0-alpha01
แล้ว เวอร์ชัน 1.1.0-alpha01 มีคอมมิตเหล่านี้
รุ่น 1.0
เวอร์ชัน 1.0.5
3 พฤศจิกายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.5
แล้ว เวอร์ชัน 1.0.5 มีคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- แก้ไขอินสแตนซ์ DerivedStateOf ในการติดตามข้อขัดข้อง (aosp/1792247)
เวอร์ชัน 1.0.4
13 ตุลาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.4
แล้ว เวอร์ชัน 1.0.4 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเป็น Kotlin
1.5.31
แล้ว
เวอร์ชัน 1.0.3
29 กันยายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.3
แล้ว เวอร์ชัน 1.0.3 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเป็น Kotlin
1.5.30
แล้ว
เวอร์ชัน 1.0.2
1 กันยายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.2
แล้ว เวอร์ชัน 1.0.2 มีคอมมิตเหล่านี้
อัปเดตเพื่อรองรับรุ่น Compose 1.0.2
เขียน 1.0.2
ยังคงใช้งานร่วมกับ Kotlin 1.5.21
ได้
เวอร์ชัน 1.0.1
4 สิงหาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.1
แล้ว เวอร์ชัน 1.0.1 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- อัปเดตเพื่อใช้ Kotlin
1.5.21
แล้ว
เวอร์ชัน 1.0.0
28 กรกฎาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0
แล้ว เวอร์ชัน 1.0.0 มีคอมมิตเหล่านี้
ฟีเจอร์หลักของ 1.0.0
นี่เป็นเวอร์ชันเสถียรรุ่นแรกของ Compose โปรดดูรายละเอียดเพิ่มเติมในบล็อกการเผยแพร่ของ Compose อย่างเป็นทางการ
ปัญหาที่ทราบ
หากใช้ Android Studio Bumblebee Canary 4 หรือ AGP
7.1.0-alpha04
/7.1.0-alpha05
คุณอาจเจอข้อขัดข้องต่อไปนี้java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
หากต้องการแก้ไข ให้เพิ่ม minSdkVersion เป็น 24 ขึ้นไปชั่วคราวในไฟล์
build.gradle
ปัญหานี้จะได้รับการแก้ไขใน Android Studio Bumblebee และ AGP7.1
เวอร์ชันถัดไป (b/194289155)
เวอร์ชัน 1.0.0-rc02
14 กรกฎาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-rc02
แล้ว เวอร์ชัน 1.0.0-rc02 มีคอมมิตเหล่านี้
- แก้ไขสภาวะการแข่งขันใน SnapshotStateObserver ที่ทำให้เกิดสปอนเซอร์ NullPointerException (aosp/1763445, aosp/1758105, b/192677711)
- แก้ปัญหาเกี่ยวกับสแนปชอตรันไทม์ที่ทำให้เกิดข้อขัดข้อง
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied
รายการ (b/193006595, b/192570897)
เวอร์ชัน 1.0.0-rc01
1 กรกฎาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-rc01
แล้ว เวอร์ชัน 1.0.0-rc01 มีคอมมิตเหล่านี้
เวอร์ชัน 1.0.0-beta09
16 มิถุนายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta09
แล้ว เวอร์ชัน 1.0.0-beta09 มีการคอมมิตเหล่านี้
เพิ่มกฎโปรไฟล์
รุ่นนี้เพิ่มกฎโปรไฟล์ในโมดูลการเขียนต่อไปนี้ (I14ed6)
- androidx.compose.animation
- androidx.compose.animation-core
- androidx.compose.foundation
- androidx.compose.foundation-layout
- androidx.compose.material
- androidx.compose.material-ripple
- androidx.compose.runtime
- androidx.compose.ui
- androidx.compose.ui.geometry
- androidx.compose.ui.graphics
- androidx.compose.ui.text
- androidx.compose.ui.text
- androidx.compose.ui.unit
- androidx.compose.ui.util
กฎโปรไฟล์คืออะไร
กฎโปรไฟล์สำหรับไลบรารีจะระบุอยู่ในไฟล์ข้อความ
baseline-prof.txt
ที่อยู่ในsrc/main
หรือไดเรกทอรีที่เทียบเท่า ไฟล์จะระบุกฎต่อบรรทัด ซึ่งกฎในกรณีนี้เป็นรูปแบบสำหรับจับคู่กับเมธอดหรือคลาสในไลบรารี ไวยากรณ์สำหรับกฎเหล่านี้คือชุดพิเศษของรูปแบบโปรไฟล์ ART ที่มนุษย์อ่านได้ซึ่งใช้เมื่อใช้adb shell profman --dump-classes-and-methods ...
กฎเหล่านี้มี 1 ใน 2 รูปแบบเพื่อกำหนดเป้าหมายเมธอดหรือคลาสกฎของเมธอดจะมีรูปแบบต่อไปนี้
<FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
และกฎของชั้นเรียนจะมีรูปแบบต่อไปนี้
<CLASS_DESCRIPTOR>
<FLAGS>
คืออักขระอย่างน้อย 1 ตัว ได้แก่H
,S
และP
เพื่อระบุว่าควรแจ้งว่าเมธอดนี้เป็น "Hot", "Startup" หรือ "Post Startup" หรือไม่<CLASS_DESCRIPTOR>
เป็นตัวบ่งชี้คลาสของวิธีที่กำหนดเป้าหมาย เช่น คลาสandroidx.compose.runtime.SlotTable
จะมีตัวบ่งชี้Landroidx/compose/runtime/SlotTable;
<METHOD_SIGNATURE>
เป็นลายเซ็นของเมธอด ซึ่งจะมีชื่อ ประเภทพารามิเตอร์ และประเภทการคืนสินค้าของเมธอด ตัวอย่างเช่น เมธอดfun isPlaced(): Boolean
ในLayoutNode
มีลายเซ็นisPlaced()Z
รูปแบบเหล่านี้มีไวลด์การ์ดได้ (
**
,*
และ?
) เพื่อให้กฎเดียวครอบคลุมเมธอดหรือคลาสหลายรายการ
กฎเหล่านี้มีหน้าที่อะไร
เมธอดที่มีแฟล็ก
H
หมายความว่าเมธอดนี้เป็น "hot" และควรคอมไพล์ไว้ล่วงหน้าเมธอดที่มี Flag
S
บ่งบอกว่าเป็นเมธอดที่มีการเรียกใช้เมื่อเริ่มต้น และควรรวบรวมล่วงหน้าเพื่อหลีกเลี่ยงค่าใช้จ่ายในการคอมไพล์และการตีความเมธอดเมื่อเริ่มต้นเมธอดที่มีแฟล็ก
P
บ่งบอกว่าเป็นเมธอดที่มีการเรียกใช้หลังจากเริ่มต้นใช้งานคลาสที่อยู่ในไฟล์นี้ระบุว่ามีการใช้คลาสระหว่างการเริ่มต้นใช้งานและควรมีการจัดสรรล่วงหน้าในฮีปเพื่อหลีกเลี่ยงค่าใช้จ่ายในการโหลดคลาส
ระบบนี้ทำงานอย่างไร
- ไลบรารีสามารถกำหนดกฎเหล่านี้ที่จะจัดแพ็กเกจในอาร์ติแฟกต์ AAR เมื่อมีการสร้างแอปซึ่งรวมถึงอาร์ติแฟกต์เหล่านี้ ระบบจะรวมกฎเหล่านี้เข้าด้วยกันและใช้กฎรวมเพื่อสร้างโปรไฟล์ ART แบบไบนารีขนาดกะทัดรัดที่เจาะจงสำหรับแอปดังกล่าวโดยเฉพาะ จากนั้น ART จะสามารถใช้ประโยชน์จากโปรไฟล์นี้เมื่อติดตั้งแอปในอุปกรณ์เพื่อคอมไพล์ชุดย่อยที่เจาะจงของแอปพลิเคชันล่วงหน้าเพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน โดยเฉพาะการเรียกใช้ครั้งแรก โปรดทราบว่าการดำเนินการนี้จะไม่มีผลต่อแอปพลิเคชันที่แก้ไขข้อบกพร่องได้
เวอร์ชัน 1.0.0-beta08
2 มิถุนายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta08
แล้ว เวอร์ชัน 1.0.0-beta08 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
State<T>
ปัจจุบันคือState<out T>
(I69049)- การเปลี่ยนแปลง API
ControlledComposition
รายการเพื่อเปิดใช้การเขียนใหม่ ในบัตรรอบเดียวที่เขียนใหม่ (Iaafd1, b/184173932)
เวอร์ชัน 1.0.0-beta07
18 พฤษภาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta07
แล้ว เวอร์ชัน 1.0.0-beta07 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม Compose Compiler API ใหม่ที่อนุญาต ข้อมูลแหล่งที่มาที่คอมไพเลอร์สร้างขึ้นเพื่อเป็น ถูกนำออกระหว่างลดขนาดของซอร์ส (Ia34e6)
แนะนำ
ReusableContent
ซึ่งจะพยายามใช้ โหนดต่างๆ ในเนื้อหา แทนการแทนที่เมื่อคีย์ มีการเปลี่ยนแปลง เมื่อเปลี่ยนคีย์ ค่าก่อนหน้าใน ตารางช่องสำหรับเนื้อหาจะถูกละเว้น ยกเว้น ที่สร้างขึ้นและค่าที่ใช้เพื่ออัปเดตแนะนำ
ReusableComposeNode
ที่จะนำโหนดกลับมาใช้ใหม่ ปล่อยออกมาแทนที่จะแทนที่ค่าดังกล่าวตามปกติสำหรับComposeNode
(I1dd86)@ComposeCompilerApi
ไม่ใช่@RequiresOptIn
อีกต่อไป (Iab690)
แก้ไขข้อบกพร่อง
- ตอนนี้ LazyColumn/Row จะเก็บรายการที่มองเห็นได้ก่อนหน้านี้สูงสุด 2 รายการที่ใช้งานอยู่ (ไม่ทิ้ง) แม้จะเลื่อนออกแล้วก็ตาม วิธีนี้จะช่วยให้คอมโพเนนต์สามารถนำองค์ประกอบย่อยที่ใช้งานอยู่มาใช้ซ้ำเมื่อเราต้องสร้างรายการใหม่ ซึ่งช่วยปรับปรุงประสิทธิภาพการเลื่อน (Ie5555)
เวอร์ชัน 1.0.0-beta06
5 พฤษภาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta06
แล้ว เวอร์ชัน 1.0.0-beta06 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
@ComposeCompilerApi
ไม่ใช่@RequiresOptIn
อีกต่อไป (Iab690)
เวอร์ชัน 1.0.0-beta05
21 เมษายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta05
แล้ว เวอร์ชัน 1.0.0-beta05 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- นำ
@InternalComposeApi
ออกสำหรับการบันทึกการอ่านและเขียนสแนปชอต (Id134d)
แก้ไขข้อบกพร่อง
- ไฟล์ AndroidManifest จาก ui-test-Manifest และ ui-tooling-data ใช้งานร่วมกับ Android 12 ได้แล้ว (I6f9de, b/184718994)
เวอร์ชัน 1.0.0-beta04
7 เมษายน 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta04
แล้ว เวอร์ชัน 1.0.0-beta04 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable ในเครื่องจะข้ามได้ตามพารามิเตอร์ หลังจากการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable ในเครื่องจะไม่ข้าม การเปลี่ยนแปลงนี้เกิดขึ้นเนื่องจากโดยทั่วไปและคาดหวังให้ฟังก์ชันในเครื่องบันทึกพารามิเตอร์จากระดับบนสุด และการข้ามถือเป็นสาเหตุทั่วไปที่มีข้อบกพร่อง
กล่าวโดยสรุปคือ
@Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) { @Composable fun ShowCount() { Text("Count: $count") } ShowCount() Button(onClick={ onCountChange(count + 1) }) { Text("Increment") } }
ก่อนการเปลี่ยนแปลงนี้ ฟังก์ชัน Composable
ShowCount
จะข้ามเสมอ แม้ว่าจะอัปเดตพารามิเตอร์count
แล้วก็ตาม แต่เหตุการณ์ดังกล่าวจะไม่เกิดขึ้นแล้ว (I5648a)แก้ไขปัญหาเมื่อ
rememberSaveable()
คืนค่าค่าเก่าเมื่อใช้กับพารามิเตอร์อินพุต (I1b110, b/182403380)
เวอร์ชัน 1.0.0-beta03
24 มีนาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta03
แล้ว เวอร์ชัน 1.0.0-beta03 มีการคอมมิตเหล่านี้
การเปลี่ยนแปลง API
DefaultMonotonicFrameClock
เลิกใช้งานแล้ว การโทรwithFrameNanos
หรือRecomposer.runRecomposeAndApplyChanges
ที่ไม่มี ตอนนี้MonotonicFrameClock
จะขว้างIllegalStateException
(I4eb0d)
เวอร์ชัน 1.0.0-beta02
10 มีนาคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta02
แล้ว เวอร์ชัน 1.0.0-beta02 มีการคอมมิตเหล่านี้
แก้ไขข้อบกพร่อง
- บังคับใช้ข้อจำกัดกับการใช้งาน API ทดลองแบบสาธารณะ (I6aa29, b/174531520)
- แก้ไข
rememberSaveable { mutableStateOf(0) }
ที่เสียหายเมื่อใช้ในปลายทางของการเขียนการนำทาง (I1312b, b/180042685, b/180701630)
เวอร์ชัน 1.0.0-beta01
24 กุมภาพันธ์ 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-beta01
แล้ว เวอร์ชัน 1.0.0-beta01 มีการคอมมิตเหล่านี้
นี่เป็นรุ่นแรกของ Compose 1.0.0 เบต้า
การเปลี่ยนแปลง API
- เพิ่ม
Recomposer.runRecomposeConcurrentlyAndApplyChanges
API ทดลองสำหรับการเรียบเรียงการเรียบเรียงที่ไม่ถูกต้องใหม่จากองค์ประกอบหลัก วนซ้ำเฟรม (I342d0) - ตอนนี้ Composable ที่มีเครื่องหมาย @ReadOnlyComposable จะได้รับการตรวจสอบเวลาคอมไพล์ เพื่อให้แน่ใจว่าจะเรียกไปยัง @ReadOnlyComposables อื่นๆ เท่านั้น (I58961)
defaultFactory
สำหรับcompositionLocalOf
และ ตอนนี้คุณจำเป็นต้องใช้staticCompositionLocalOf
แทน ไม่บังคับการเปลี่ยนแปลงนี้จะนําข้อผิดพลาดประเภทที่อาจเป็นค่าว่างออก ประเภทที่ไม่ได้ระบุค่าเริ่มต้นจากโรงงาน ก่อนหน้านี้ จะให้การอ้างอิง Null สำหรับประเภทที่ไม่เป็นค่าว่าง
สำหรับประเภทที่เว้นว่างได้ ให้พิจารณาระบุ
{ null }
เป็นค่าเริ่มต้น โรงงานเราไม่แนะนำให้ใช้ท้องถิ่นที่มีประเภทที่ไม่มีค่าว่าง ยกเว้น สามารถระบุค่าเริ่มต้นที่เหมาะสมได้ หากไม่มีค่าเริ่มต้นที่เหมาะสม lambda
defaultFactory
ควรส่งข้อยกเว้น อย่างไรก็ตาม การส่งคำขอยกเว้นหมายความว่าผู้บริโภคในพื้นที่จะ การพึ่งพาโดยนัยที่ให้ไว้ซึ่งไม่ได้บังคับใช้ ตามระบบประเภท (Ifbd2a)สัญลักษณ์ที่เลิกใช้งานแล้วถูกนำออกจากรันไทม์การเขียน (I3252c)
เลิกใช้งาน
emptyContent()
แล้ว โปรดใช้{}
แทน (Idb33f, b/179432510)ผู้ให้บริการเปลี่ยนชื่อเป็น CompositionLocalProvider
- เครื่องมือสร้างการเรียบเรียงไม่ยอมรับพารามิเตอร์คีย์อีกต่อไปและเลิกใช้งานแล้ว
- ได้เปลี่ยนcurrentCompositeKeyHash เป็นพร็อพเพอร์ตี้ระดับบนสุดที่ประกอบได้แทนฟังก์ชันระดับบนสุดที่ประกอบกันได้
- ย้าย CompositionData และ CompositionGroup ไปยังเนมสเปซ androidx.compose.runtime.tooling แล้ว
- ComposableLambda ได้รับการสร้างเป็นอินเทอร์เฟซแทนคลาสที่เป็นรูปธรรมและไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ComposableLambdaN ได้รับการสร้างเป็นอินเทอร์เฟซแทนคลาสที่เป็นรูปธรรมและไม่มีพารามิเตอร์ประเภทอีกต่อไป
- ย้ายฟังก์ชัน Snapshot ไปยังเนมสเปซ androidx.compose.runtime แล้ว
- วิธีการผสานของ SnapshotMutationPolicy ไม่ใช่เวอร์ชันทดลองอีกต่อไป
- ฟังก์ชัน clearRoots ระดับบนสุดของ @TestOnly ถูกนำออกแล้ว ไม่จำเป็นอีกต่อไป
- ลบฟังก์ชัน keySourceInfoOf และresetSourceInfo แล้ว เนื่องจากไม่จำเป็นต้องใช้อีกต่อไป
- Composer.collectKeySourceInformation ถูกนำออกแล้ว ไม่จำเป็นอีกต่อไป
- นำเมธอด isjoinedKey, JoinedKeyLeft และ joinKeyRight ออกแล้ว เนื่องจากไม่จำเป็นต้องใช้อีกต่อไป
- API ระดับบนสุดหลายรายการถูกย้ายและจัดระเบียบใหม่เป็นไฟล์ที่ต่างกัน เนื่องจากอรรถศาสตร์คลาสไฟล์ของ Kotlin จะทำให้ความเข้ากันได้ของไบนารีเสียหาย แต่ไม่ใช่ความเข้ากันได้ของแหล่งที่มา ดังนั้นจึงไม่ควรเป็นปัญหาสำหรับผู้ใช้ส่วนใหญ่
- (I99b7d, b/177245490)
SnapshotStateObserver ไม่ใช่เวอร์ชันทดลองอีกต่อไป (Id2e6a)
ลบ API ที่เลิกใช้งานก่อนหน้านี้บางรายการ (Ice5da, b/178633932)
ทำการเปลี่ยนแปลง Material API ต่อไปนี้
- เพิ่มพารามิเตอร์ contentPadding ใน Top/BottomAppBar เพื่ออนุญาตให้ปรับแต่งระยะห่างจากขอบเริ่มต้นได้
- พารามิเตอร์ที่เรียงลำดับใหม่ใน BackdropScaffold เพื่อให้เป็นไปตามหลักเกณฑ์ของ API สำหรับพารามิเตอร์ที่จำเป็นก่อนพารามิเตอร์ที่ไม่บังคับ
- ย้ายพารามิเตอร์
icon
ใน BottomNavItem ให้อยู่หลังselected
และonClick
แล้ว - เปลี่ยนชื่อพารามิเตอร์
alwaysShowLabels
ใน BottomหายไปItem เป็นalwaysShowLabel
แล้ว - เปลี่ยนชื่อพารามิเตอร์
bodyContent
ในคอมโพเนนต์บางรายการเป็นcontent
แล้ว - พารามิเตอร์ที่เรียงลำดับใหม่ใน
ButtonDefaults.buttonColors()
โปรดทราบว่าเนื่องจากประเภทของพารามิเตอร์ไม่มีการเปลี่ยนแปลง จึงไม่ทำให้เกิดข้อผิดพลาดในโค้ดของคุณ โปรดตรวจสอบว่าคุณกำลังใช้พารามิเตอร์ที่มีชื่อหรืออัปเดตลำดับด้วยตนเอง มิฉะนั้นโค้ดของคุณจะไม่ทำงานเหมือนที่เคย - เพิ่มพารามิเตอร์
secondaryVariant
ในdarkColors()
แล้ว โดยปกติสีนี้เหมือนกับsecondary
ในธีมมืด แต่เพิ่มเพื่อความสอดคล้องและปรับแต่งได้มากขึ้น - นำ ElevationDefaults และ animateElevation() ออกจากแพลตฟอร์ม API สาธารณะแล้ว เนื่องจากไม่ได้ใช้ / มีประโยชน์โดยทั่วไป
- เปลี่ยนชื่อ
onValueChangeEnd
ในSlider
เป็นonValueChangeFinished
และทำให้เป็นโมฆะแล้ว - เปลี่ยนชื่อพารามิเตอร์
text
ในSnackbar
เป็นcontent
เพื่อความสอดคล้อง - เพิ่มพารามิเตอร์
contentPadding
ในDropdownMenuItem
เพื่ออนุญาตให้ปรับแต่งระยะห่างจากขอบเริ่มต้นได้ รวมถึงกำหนดให้content
เป็นส่วนขยายในRowScope
- เปลี่ยนชื่อ
ModalDrawerLayout
เป็นModalDrawer
แล้ว - เปลี่ยนชื่อ
BottomDrawerLayout
เป็นBottomDrawer
แล้ว - (I1cc66)
เวอร์ชัน 1.0.0-alpha12
10 กุมภาพันธ์ 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha12
แล้ว เวอร์ชัน 1.0.0-alpha12 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- การรองรับ ViewGroups ถูกนำออกจาก UiApplier แล้ว นำ Composable ของ emitView ที่เลิกใช้งานแล้วออก (Ifb214)
- Compositionreference เปลี่ยนชื่อเป็น CompositionContext (I53fcb)
- ย้าย ComponentActivity.setContent ไปยัง androidx.activity.compose.setContent ใน androidx.activity:activity-compose โมดูล (Icf416)
- Snapshot API ได้รับการอัปเดตให้สอดคล้องกับ หลักเกณฑ์ API และการซ่อนคลาสการใช้งานภายใน จาก API สาธารณะ (Id9e32)
- เปลี่ยนชื่อแอมเบียนท์ให้ตรงกับแอมเบียนท์ -> การเปลี่ยนชื่อ CompositionLocal แอมเบียนท์เคยมีชื่อว่า AmbientFoo แต่ปัจจุบัน CompositionLocals เรียกว่า LocalFoo (I2d55d)
- เปลี่ยนชื่อแอมเบียนท์เป็น CompositionLocal และแอมเบียนท์ของ / staticAmbientOf เป็นรอบๆ เนื้อหานี้ / staticCompositionLocalOf ตามลำดับ การเปลี่ยนแปลงนี้ช่วยให้วัตถุประสงค์ของ CompositionLocal ชัดเจนมากขึ้นว่าเป็นกลไกในการแจ้ง / ดึงค่าท้องถิ่นในการเรียบเรียง อินสแตนซ์ CompositionLocal ควรขึ้นต้นด้วย
Local
เช่น val LocalFoo = managementLocalOf { Foo() } (Ia55b6) - TakeMutableSnapshot และtakeSnapshot มี เปลี่ยนเป็นเมธอดที่แสดงร่วมของสแนปชอต (I91F19)
@ComposableContract
เลิกใช้งานแล้วเพื่อใช้คำอธิบายประกอบที่เจาะจงมากขึ้น 3 รายการ@ComposableContract(restartable = false)
เปลี่ยนเป็น@NonRestartableComposable
แล้ว@ComposableContract(readonly = true)
เปลี่ยนเป็น@ReadOnlyComposable
แล้ว@ComposableContract(preventCapture = true)
ได้เปลี่ยนเป็น@DisallowComposableCalls
นำ@ComposableContract(tracked = true)
ออกแล้ว (I60a9d)blankContent() และ (@Composable () -> Unit).orEmpty() เลิกใช้งานแล้วเนื่องจากไม่มีผลกระทบหรือค่าด้านประสิทธิภาพในเชิงบวกอีกต่อไป (I0484d)
snapshotFlow
และwithMutableSnapshot
ไม่ได้เป็นสมาชิกแล้ว ทดลอง (I6a45f)ปิดเครื่องมือปรับแต่งได้แล้ว รีคอมโพสเซอร์แบบปิดจะ จัดองค์ประกอบใหม่ต่อจนกว่าโครูทีนเด็กการเรียบเรียงเพลงจะเสร็จสมบูรณ์ Recomposer.shutDown เปลี่ยนชื่อเพื่อตัดกับการปิด (Ib6d76)
เลิกใช้งานอาร์ติแฟกต์
compose:runtime-dispatch
แล้ว ขณะนี้สามารถดู MonotonicFrameClock ได้ใน write:runtime และ ดู AndroidUiDispatcher ได้ในCompose:ui (Ib5c36)API เป้าหมายของปลั๊กอินคอมไพเลอร์ Compose ได้รับการปรับโครงสร้างภายในโค้ดใหม่ เพื่อใช้อินเทอร์เฟซแทน ที่แน่นอนได้ง่าย อินเทอร์เฟซก็ไม่ใช้งาน พารามิเตอร์ประเภท
นี่เป็นการเปลี่ยนแปลงภายในที่ไม่ควรมีผลกับแหล่งที่มา สามารถใช้งานร่วมกันของโค้ดได้ แต่เป็นการเปลี่ยนแปลงการขัดข้องแบบไบนารี (I3b922, b/169406779)
เปิดตัว SnapshotMutableState (Icfd03)
DisposableEffectDisposable เปลี่ยนชื่อเป็น DisposaleEffectResult (Ica7c6)
นำ Recomposer.current() ออกแล้ว [Abstract]ComposeView เลย จะใช้ค่าเริ่มต้นเป็น Recomposer ที่สร้างแบบ Lazy Loading เป็น Recomposer ที่มีขอบเขตเป็นหน้าต่าง ซึ่งขับเคลื่อนด้วย ViewTreeLifecycleOwner สำหรับหน้าต่าง การจัดองค์ประกอบใหม่และ หยุดภาพเคลื่อนไหวจาก withFrameNanos ไว้ชั่วคราวขณะ Lifecycle ของโฮสต์ จะหยุดลง (I38e11)
ตอนนี้ Recomposer.runningRecomposers มีระบบ StateFlow ระดับโลก RecomposerInfo แบบอ่านอย่างเดียวสำหรับสังเกตสถานะการเรียบเรียงต่อเนื่องใน ขั้นตอน เลือกใช้ API นี้กับ Recomposer.current() ซึ่งตอนนี้คือ เลิกใช้งานแล้ว (If8ebe)
DisposableEffectDisposable เปลี่ยนชื่อเป็น DisposaleEffectResult (I3ea68)
เวอร์ชัน 1.0.0-alpha11
28 มกราคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha11
แล้ว เวอร์ชัน 1.0.0-alpha11 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เราเลิกใช้งาน onCommit, onDispose และ onActive แล้วเพื่อเปลี่ยนไปใช้ SideEffect และ DisposableEffect API (If760e) แทน
- emit() API และโอเวอร์โหลดทั้งหมดเลิกใช้งานแล้วและเปลี่ยนชื่อเป็น ComposeNode API นี้เหมือนกัน เพียงแต่เป็นคนละชื่อเพื่อเป็นไปตามรูปแบบการตั้งชื่อของ Compose (I4137b)
- "โมฆะ" และ "ComCompositionReference()" จะถูกเลิกใช้งานเพื่อใช้ CurrentRecomposeScope และ RememberComCompositionReference ตามลำดับ (I583a8)
RememberObserver มาแทนที่ CompositionLifecycleObserver และ CompositionLifecycleObserver เลิกใช้งานแล้ว
RememberObserver
มาแทนที่CompositionLifecycleObserver
อรรถศาสตร์ที่ดัดแปลงและ ที่เปลี่ยนชื่อแล้ว การเปลี่ยนไปใช้ API ใหม่สามารถทำได้โดยกลไก สำหรับออบเจ็กต์ที่ถูกจดจำเพียงครั้งเดียว ซึ่งก็คือ แนวทางปฏิบัติที่แนะนำ อย่างไรก็ตาม หากข้อมูลอ้างอิง ถูกจดจำมากกว่า 1 ครั้งในการเรียบเรียงเพลงonRemembered
สำหรับการอ้างอิงแต่ละรายการที่มีการเรียกonEnter
เพียงครั้งเดียวonEnter
ถูกเรียกหลายครั้ง หากใช้อ็อบเจกต์ในองค์ประกอบย่อย เช่นWithConstraints
และScaffold
ที่สร้างซิงเกิล การรับประกันการโทรของonEnter
ไม่น่าเชื่อถือและถูกนำออกสำหรับRememberObserver
RememberObserver
จะเพิ่มonAbandoned
ซึ่งจะถูกเรียกหากฟิลด์ ส่งคืนอินสแตนซ์RememberObserver
รายการจาก Callback ที่ผ่านแล้ว ถึงremember
แต่ระบบจำไม่ได้ในสถานะการเรียบเรียง ดังนั้นจึงจะไม่มีการเรียกใช้onRemembered
เลย สิ่งนี้สามารถ เกิดขึ้นเมื่อข้อยกเว้นสิ้นสุดการเรียบเรียงก่อนเสร็จสิ้นหรือ การแต่งเพลงถูกยกเลิกเนื่องจากสถานะกำลังสร้าง การแต่งเพลงสำหรับ ไม่เป็นปัจจุบันหรือไม่ได้เป็นอีกต่อไปแล้ว ที่จำเป็น ถ้าอินสแตนซ์ของRememberObserver
ต่อจากซิงเกิล คำแนะนำข้อมูลอ้างอิงด้านบนกำลังติดตามทรัพยากรภายนอก ทั้งonForgotten
และonAbandoned
ต่างก็ระบุว่า ไม่จำเป็นต้องใช้ทรัพยากรอีกแล้ว หากออบเจ็กต์กำลังติดตามงาน เริ่มต้นหรือทรัพยากรที่จัดสรรในonRemembered
,onAbandoned
สามารถเพิกเฉยได้ เนื่องจากจะไม่เรียกใช้หากonRemembered
คือ โทรออก (I02c36)ไม่ต้องทำเครื่องหมายฟังก์ชัน
collectAsState()
ว่าแทรกในบรรทัด (Ia73e4)
แก้ไขข้อบกพร่อง
- โดยWithConstraints ได้รับการปรับปรุงใหม่เป็น BoxWithConstraints และย้ายไปยัง Foundation.layout (I9420b, b/173387208)
- ใช้ประโยชน์จาก TestCoroutineDispatcher ในการทดสอบ (I532b6)
เวอร์ชัน 1.0.0-alpha10
13 มกราคม 2021
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha10
แล้ว เวอร์ชัน 1.0.0-alpha10 มีคอมมิตเหล่านี้
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ
การปรับโครงสร้างคอมไพเลอร์ภายใน API อนุญาตให้ทำการเปลี่ยนแปลงเป็นกลุ่มกับโหนดที่สร้าง อันเป็นผลมาจากองค์ประกอบลงใน "ใช้การเปลี่ยนแปลง" ระยะการเรียบเรียง หลังจากฟังก์ชันทั้งหมด
@Composable
รายการ เสร็จสมบูรณ์นี่เป็นการละเมิดด้านพฤติกรรม การเปลี่ยนแปลงที่อาจส่งผลกระทบต่อโค้ดของแอปพลิเคชัน ไม่สามารถใช้โหนดจากภายใน และ API ทดลองจนกว่าการเปลี่ยนแปลงจะเสร็จสิ้น ใช้แล้ว โดยทั่วไปแล้ว ปัญหานี้จะทำได้โดย รอบโค้ดที่มีการอ้างอิงดังกล่าวใน
SideEffect
Composable เพื่อเลื่อนการดำเนินการของ จนกว่าจะมีการสร้างโหนดขึ้นและ ได้เริ่มต้นแล้ว (I018da)
การเปลี่ยนแปลง API
- เพิ่มวิธีติดตามว่า recomposer ได้ใช้การเปลี่ยนแปลงแล้ว (I1b3e2)
ขยาย [Abstract]ComposeView API เพื่ออนุญาตให้มีการรีไซเคิล มุมมองจากการเขียน นำการเรียบเรียงออกเพื่อสร้างใหม่อีกครั้ง ในภายหลัง เพิ่ม API สำหรับการติดตั้งและค้นหาเครื่องมือปรับแต่งขอบเขตหน้าต่าง และ CompositionReferences สำหรับสร้างการเรียบเรียงย่อย
เพิ่ม ViewCompositionStrategy สำหรับการกำหนดค่าการกำจัดองค์ประกอบ กลยุทธ์ของ [Abstract]ComposeViews มีการกำจัดลักษณะการทำงานเริ่มต้น ให้ถอดหน้าต่างออก (I860ab)
แก้ไขข้อบกพร่อง
- ตอนนี้เครื่องมือปรับแต่งจะแสดงโฟลว์ของสถานะปัจจุบัน ซึ่งช่วยให้ ติดตามกิจกรรมและกิจกรรมของผลกระทบที่เกี่ยวข้อง (Ifb2b9)
- ตอนนี้คุณจะเข้าถึง keyEvent แบบเนทีฟได้ผ่าน keyEvent.nativeKeyEvent (I87c57, b/173086397)
เวอร์ชัน 1.0.0-alpha09
16 ธันวาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha09
แล้ว เวอร์ชัน 1.0.0-alpha09 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
นำ SlotTable, SlotReader และ ออกแล้ว SlotWriter จาก API สาธารณะ โดยทำเครื่องหมายเป็น InternalComposeAPI ไว้ก่อนหน้านี้ แต่เป็นการใช้งานภายใน ไปยังโมดูลการเขียน
เพิ่ม CompositionData และ CompositionGroup เป็น การแทนที่ ui-tooling API เพื่อใช้ในการดึงข้อมูล ข้อมูลการเรียบเรียง รายการเหล่านี้เป็นแบบสาธารณะแต่ไม่ใช่ ใช้สำหรับภายนอก UI-tooling API เนื่องจากมี ข้อมูลดิบที่ API ของเครื่องมือ UI ตีความ (I31a9c)
คลาส Applier ไม่ถือว่าเป็น (Id85b0) อีกต่อไป
มีการเปลี่ยนแปลงอินเทอร์เฟซของ
Applier
เพื่อลดความซับซ้อน สร้างต้นไม้จากล่างขึ้นบนแทนที่จะสร้างจากด้านบนเมธอด
insert()
เปลี่ยนชื่อเป็นinsertTopDown()
แล้วเพิ่มเมธอด
insertBottomUp()
ใหม่แล้วแอปพลิเคชันจะแทรกโหนดลงในแผนผังที่กำลังแก้ไข โดยใช้
insertTopDown()
หรือinsertBottomUp()
ขึ้นอยู่กับ ซึ่งทำงานได้ดีกว่าต้นไม้บางต้น เช่น
LayoutNode
และView
จะมีขนาดใหญ่กว่า มีประสิทธิภาพในการสร้างจากล่างขึ้นบน มากกว่าจากด้านบนลงล่าง ก่อนการเปลี่ยนแปลงนี้ ต้องมีกลุ่มของส่วนแทรกในการใช้งานจากล่างขึ้นบน จำเป็นต้องคัดลอกไปยังเครื่องมือทั้งหมดที่ต้องขึ้นไปด้านล่าง ที่ช่วยเพิ่มประสิทธิภาพ การเปลี่ยนแปลงนี้จะทำให้Applier
ลบล้างinsertBottomUp()
เพื่อสร้างแผนผังต้นไม้และinsertTopDown()
เพื่อสร้างแผนผังต้นไม้ (Icbdc2)Compose รองรับ Getter พร็อพเพอร์ตี้ที่สร้างการเรียกใช้ Composable ได้ การรองรับโค้ดนี้ยังคงอยู่ แต่ไวยากรณ์สำหรับการประกาศ Getter พร็อพเพอร์ตี้ว่าเป็น @Composable กำลังจะมีการเปลี่ยนแปลง
ไวยากรณ์ที่เลิกใช้งานแล้วตอนนี้สำหรับการดำเนินการนี้คือการใส่คำอธิบายประกอบให้กับพร็อพเพอร์ตี้เอง
@Composable val someProperty: Int get() = ...
ไวยากรณ์ที่ถูกต้องสำหรับการดำเนินการนี้คือการใส่คำอธิบายประกอบ Getter ของพร็อพเพอร์ตี้ ดังนี้
val someProperty: Int @Composable get() = ...
ไวยากรณ์ทั้งสองแบบจะใช้งานได้สักระยะหนึ่ง แต่ไวยากรณ์เดิมที่เลิกใช้งานจะกลายเป็นข้อผิดพลาดในการคอมไพล์ (รหัส 9197)
แก้ไขข้อบกพร่อง
- AndroidOwner สร้างภายใน (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) ได้รับการสร้างขึ้นภายใน (Id724a)
เวอร์ชัน 1.0.0-alpha08
2 ธันวาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha08
แล้ว เวอร์ชัน 1.0.0-alpha08 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่มการตรวจสอบ Lint สำหรับการตั้งชื่อและตำแหน่งของพารามิเตอร์ lambda ที่ประกอบกันได้ เพื่อตรวจสอบความสอดคล้องของหลักเกณฑ์การเขียน
รวมทั้งย้ายข้อมูล API บางรายการโดยใช้
children
เป็นชื่อสำหรับ lambda ต่อท้ายcontent
ตามการตรวจสอบ Lint และคำแนะนำ (Iec48e) - Recomposer ไม่ยอมรับ EmbeddingContext อีกต่อไป ต้องระบุ ทรัพยากร Dependency ของกำหนดการจะดึงมาจาก EffectCoroutineContext เลิกใช้งาน FrameManager แล้ว การผสานรวมแพลตฟอร์มควรเริ่มต้น การจัดการสแนปชอตทั่วโลกของตนเอง (I02369)
- ฟังก์ชัน ResorableStateHolder.withRestorableState ถูกเปลี่ยนชื่อเป็น BackuporableStateProvider (I66640)
แก้ไขข้อบกพร่อง
- แอมเบียนท์ที่เลิกใช้งานซึ่งตั้งชื่อด้วย
Ambient
เป็นคำต่อท้าย และแทนที่ด้วยพร็อพเพอร์ตี้ใหม่ที่ขึ้นต้นด้วย "แอมเบียนท์" ตามหลักเกณฑ์อื่นๆ ของแอมเบียนท์และ Compose API (I33440) - นำโมดูลการทดสอบ UI เก่าและสตับของโมดูลออก (I3a7cb)
เวอร์ชัน 1.0.0-alpha07
11 พฤศจิกายน 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha07
แล้ว เวอร์ชัน 1.0.0-alpha07 มีคอมมิตเหล่านี้
ฟีเจอร์ใหม่
การเปลี่ยนแปลง API
- คำอธิบายประกอบ
@UnionType
เลิกใช้งานแล้ว (I57cde) - มีการเพิ่ม providedDefault เป็นทางเลือกในการระบุข้อมูลสำหรับแอมเบียนท์ และสามารถใช้เพื่อระบุค่าแอมเบียนท์ที่จะตั้งค่าเมื่อไม่มีค่าแอมเบียนท์อยู่แล้วเท่านั้น (Id6635, b/171024925)
- LaunchedTask เปลี่ยนชื่อเป็น LaunchedEffect เพื่อความสอดคล้อง ด้วย API ของ SideEffect และ DisposableEffect LaunchedEffect ที่ไม่มี ไม่อนุญาตให้ใช้พารามิเตอร์หัวเรื่องเพื่อส่งเสริมแนวทางปฏิบัติแนะนำ (Ifd3d4)
- ขณะนี้ Applier มี Callback onBeginChanges/onEndChanges ที่ เรียกใช้เมื่อคอมโพสเซอร์เริ่มต้น/เสร็จสิ้นการเปลี่ยนแปลงกับโครงสร้าง ซึ่งอาจใช้สำหรับการจัดการทรัพยากรแบบกลุ่ม หากจำเป็น (Icf476)
- ขณะนี้ Recomposer ต้องใช้ CoroutineContext ขณะสร้าง (Ic4610)
- การเปลี่ยนแปลงการใช้งาน SlotTable ภายในซึ่ง ไม่ส่งผลกระทบต่อ API สาธารณะ (If9828)
- มีการนำอะแดปเตอร์ rxjava2 ที่เลิกใช้งานแล้วออก ซึ่งไม่มีค่าเริ่มต้น (Idb72f)
แก้ไขข้อบกพร่อง
- Foundation.Text เลิกใช้งานแล้วและแทนที่ด้วย Material.Text สำหรับ API ข้อความพื้นฐานที่ไม่ถูกตัดสินซึ่งไม่ใช้ค่าจากธีม โปรดดู androidx.compose.foundation.BasicText (If64cb)
- เลิกใช้งาน BaseTextField แล้ว โปรดใช้ BasicTextField แทน (I896eb)
- มีการย้ายสัญลักษณ์ที่เกี่ยวข้องกับเลย์เอาต์หลายรายการจาก androidx.compose.ui ไปยัง androidx.compose.layout.ui (I0fa98, b/170475424)
การสนับสนุนภายนอก
- เพิ่มโมดูล
runtime-rxjava3
สำหรับการเขียนแล้ว คล้ายกับruntime-rxjava2
(I02cbf)
เวอร์ชัน 1.0.0-alpha06
28 ตุลาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha06
แล้ว เวอร์ชัน 1.0.0-alpha06 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้ Recomposer ได้เป็น CompositionReference และเป็นลิงก์ที่ถูกต้องแล้ว องค์ประกอบหลัก ตอนนี้ลดจำนวนเครื่องมือปรับแต่ง Explicit Recomposer ในจำนวนน้อยลงแล้ว (I4036F)
- เพิ่ม API คู่ DisposableEffect ลงใน SideEffect แล้ว การเติมข้อมูล
บทบาทของ onCommit-with-params แต่ต้องมี onDispose
- เพิ่ม RememberUpdatedState API เพื่อเผยแพร่ข้อมูลจากการจัดองค์ประกอบใหม่เป็น กระบวนการที่ใช้อย่างต่อเนื่องหรือใช้เวลานาน เช่น DisposableEffects หรือ งานเปิดตัวแล้ว
- (Id50b9)
- MutableVector ใช้ RandomAccess (I85d73, b/170461551)
- เพิ่ม SideEffect ที่เขียนได้ด้วย Composable สำหรับการใช้ผลข้างเคียงของ การจัดวางองค์ประกอบให้กับวัตถุ ที่มีการจัดการโดยองค์ประกอบนั้น SideEffect คือ มีไว้เพื่อแทนที่ onCommit แบบ Composable (Ia77c2)
- relorableStateHolder สําหรับ API ทดลองใหม่ โหมดนี้ช่วยให้สามารถบันทึกสถานะที่กำหนดไว้ด้วย [savedInstanceState] และ [rememberSavedInstanceState] สำหรับซับทรีก่อนที่จะกำจัด เพื่อให้สามารถประกอบโครงสร้างดังกล่าวกลับเข้ามาในลำดับอีกครั้งในสถานะที่คืนค่ากลับมาได้ (I66884, b/166586419)
แก้ไขข้อบกพร่อง
- เปิดใช้การเปลี่ยนใน ComposeTestRule ลบตัวเลือกในการ เปิดใช้เคอร์เซอร์ที่กะพริบจาก ComposeTestRule (If0de3)
เวอร์ชัน 1.0.0-alpha05
14 ตุลาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha05
แล้ว เวอร์ชัน 1.0.0-alpha05 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เชิงทดลอง Modifier.pointerInput ตัวปรับแต่งอินพุตระงับ (Ia77d2)
- ประสิทธิภาพการเลื่อนของ LazyColumn/Row ดีขึ้นโดยลดองค์ประกอบย่อยในการเลื่อนแต่ละครั้ง เพิ่มเมธอด hasทันทีหลังจากการทำซ้ำ() แบบใหม่สำหรับคลาสการเรียบเรียง เมธอด hasPendingChanges() จาก Recomposer ถูกเปลี่ยนชื่อเป็น hasให้สอดคล้องกับ() (Ib2f32, b/168293643, b/167972292, b/165028371)
- เพิ่ม generateState API สำหรับการเปิดใช้โครูทีนจากการเรียบเรียง
ที่อัปเดตค่า
State<T>
ค่าเดียวเมื่อเวลาผ่านไป (Id4a57) - LaunchInComposition เปลี่ยนชื่อเป็น LaunchedTask เพื่อจับคู่กับ Compose หลักเกณฑ์ API (I99a8e)
- ตอนนี้ลำดับของการเรียก Place() ในเลย์เอาต์ที่กำหนดเองจะเป็นตัวกำหนดลำดับการวาดสำหรับเด็กแล้ว (Ibc9f6)
เวอร์ชัน 1.0.0-alpha04
1 ตุลาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha04
แล้ว เวอร์ชัน 1.0.0-alpha04 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม OwnerScope เพื่ออนุญาตให้เก็บรวบรวม และวาดขอบเขตสังเกตการณ์ ใช้ไม่ได้อีกต่อไป (Ic4cf8)
- เพิ่ม getStateOf API เพื่อสร้างออบเจ็กต์สถานะโดยอิงตามการคำนวณซึ่งอาจอ่าน (และดึงมาจาก) ออบเจ็กต์สถานะอื่นๆ (If758b)
- เพิ่ม TestOnly API สำหรับ SnapshotStateObserver (I6e2a9)
แก้ไขข้อบกพร่อง
- Foundation.Box เลิกใช้งานแล้ว โปรดใช้ Foundation.layout.Box แทน (Ie5950, b/167680279)
เวอร์ชัน 1.0.0-alpha03
16 กันยายน 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha03
แล้ว เวอร์ชัน 1.0.0-alpha03 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ไม่มีการใช้งาน
CompositionCoroutineScope
แล้วMonotonicFrameClock
ผู้โทรของwithFrameNanos
ควรนำเข้าระดับบนสุด อย่างชัดเจน (Icb642, b/166778123)
แก้ไขข้อบกพร่อง
- ตอนนี้ฟังก์ชันการทดสอบส่วนกลาง เช่น
onNode
หรือwaitForIdle
พร้อมใช้งานแล้ว เลิกใช้งานแล้ว โปรดย้ายข้อมูลไปยังพาร์ทเนอร์ใหม่ที่กำหนดไว้ใน ComposeTestRule (I7f45a) launchInComposition
ไม่ได้เปิด coroutines ที่ไม่ได้ส่งแล้ว (Ief6af, b/166486000)
เวอร์ชัน 1.0.0-alpha02
2 กันยายน 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha02
แล้ว เวอร์ชัน 1.0.0-alpha02 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- เพิ่ม API ของ
snapshotFlow
และwithMutableSnapshot
เพื่อใช้งาน และทำการเปลี่ยนแปลงข้อมูลสแนปชอต (I3e722) แบบแผนการเรียกใช้สำหรับฟังก์ชันที่ประกอบกันได้มี มีการเปลี่ยนแปลง นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบไบนารี ห้องสมุดทั้งหมดต้องเป็น ได้รับการคอมไพล์ซ้ำเพื่อให้ทำงานร่วมกับปลั๊กอินคอมไพเลอร์ Compose เวอร์ชันนี้ได้
การเปลี่ยนแปลงนี้จะไม่สร้างการเปลี่ยนแปลงช่วงพักโฆษณาระดับแหล่งที่มาเนื่องจาก เฉพาะ API ที่มีการเปลี่ยนแปลงคือ API ของคอมไพเลอร์ที่มีโค้ด เลือกใช้ (I7afd2, b/158123185)
นำวิธีการกำหนดเวลาออกจาก EmbeddingContext (I7b9be) แล้ว
เลิกใช้งาน onPreCommit แล้ว ตอนนี้ onCommit มีใน PreCommit พฤติกรรมของคุณ
onCommit และ onActive จะทำงานในเฟรมนักออกแบบท่าเต้นเดียวกัน การเปลี่ยนแปลงองค์ประกอบที่กระทำในตอนต้น ไม่ใช่ตอนต้น ของนักออกแบบท่าเต้นถัดไป (I70403)
เวอร์ชัน 1.0.0-alpha01
26 สิงหาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:1.0.0-alpha01
แล้ว เวอร์ชัน 1.0.0-alpha01 มีคอมมิตเหล่านี้
เวอร์ชัน 0.1.0-dev
เวอร์ชัน 0.1.0-dev17
19 สิงหาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:0.1.0-dev17
แล้ว เวอร์ชัน 0.1.0-dev17 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
- ตอนนี้การปล่อยที่กำหนดเองจะประกาศว่ามีตัวตั้งค่าอย่างน้อย 1 ตัว สามารถข้ามและเขียนใหม่ได้อย่างอิสระโดยไม่ขึ้นอยู่กับการปล่อย (Ibbd13)
นำการเรียก FrameManager ที่เลิกใช้งานแล้วออก
มีการเปลี่ยนแปลง API การเขียนภายในเพื่อลดจำนวน ค่าใช้จ่ายในการดำเนินการเพื่อติดตามวัตถุสถานะ เช่น
mutableStateof()
(I80ba6)ขณะนี้ Composable ของ
state { ... }
เลิกใช้งานแล้วเพื่อให้ การเรียกไปที่remember { mutableStateOf(...) }
อย่างชัดแจ้งเพื่อความชัดเจน การดำเนินการนี้จะลดแพลตฟอร์ม API โดยรวมและจำนวนแนวคิดสำหรับสถานะ การจัดการ และตรงกับรูปแบบby mutableStateOf()
สำหรับชั้นเรียน การมอบสิทธิ์พร็อพเพอร์ตี้ (Ia5727)ตอนนี้ Flow.collectAsState จะระบุตัวส่งเริ่มต้นจาก องค์ประกอบเหล่านี้ แทนที่จะกำหนดค่าเริ่มต้นเป็น Dispatchers.Main (I9c1d9)
ขัดข้องเมื่อมีการแก้ไขสิ่งที่บันทึกสถานะไว้ภายในสำหรับวนซ้ำ การมีคีย์เดียวกันใน savedInstanceState() ได้รับอนุญาตแล้ว ตอนนี้ API ของ UiSavedStateRegistry จึงมีการปรับตามข้อกำหนดใหม่นี้ (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
แก้ไขข้อบกพร่อง
emitView
เลิกใช้งานแล้ว ใช้AndroidView
แทนหากทำได้เพื่อปล่อย View ภายใน Compose โปรดทราบว่าระบบจะไม่รองรับการเขียน View และ ViewGroups โดยตรงในอนาคตเว้นแต่จะออกมาอยู่ในแผนผังองค์ประกอบ ทั้งในกรณีที่ใช้ AndroidView ได้ (I29b1e, b/163871221)
เวอร์ชัน 0.1.0-dev16
5 สิงหาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:0.1.0-dev16
แล้ว เวอร์ชัน 0.1.0-dev16 มีคอมมิตเหล่านี้
การเปลี่ยนแปลง API
นโยบายการเปลี่ยนแปลงเริ่มต้นของ
mutableStateOf()
ambientOf()
และsavedInstanceStateOf()
ได้เปลี่ยนเป็นstructuralEqualityPolicy()
จากreferentialEqualityPolicy()
ค่าเริ่มต้นสำหรับการตัดสินใจว่า ค่าใหม่ที่กำหนดให้กับ อินสแตนซ์
mutableStateOf()
รายการถือว่าเป็นการเปลี่ยนแปลงซึ่งเป็นค่าเริ่มต้นเป็น โดยใช้==
แทนการใช้===
ดู https://kotlinlang.org/docs/reference/equality.html
ambientOf()
และsavedInstanceStateOf()
ใช้mutableStateOf()
ในการนำไปใช้งานจริง เพื่อให้สอดคล้องกับนโยบายmutableStateOf()
การใช้ความเท่าเทียมกันของโครงสร้างใกล้เคียงกับนักพัฒนาซอฟต์แวร์มากขึ้น ความคาดหวัง
ตัวอย่างเช่น
val state = mutableStateOf(1f)
ตามด้วย
state.value = 1f
จะไม่ถือว่าเป็นการเปลี่ยนแปลง
state
และการใช้งานstate
ระหว่างการแต่งจะไม่ต้องเขียนใหม่อีกนี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ แต่ในกรณีส่วนใหญ่ (เช่น เมื่อใช้ คลาสที่ไม่ได้ลบล้าง
equals()
) การดำเนินการนี้จะไม่มี ผลกระทบที่สังเกตเห็นได้ในแอปพลิเคชันคลาสที่ลบล้าง
equals()
เช่นdata
คลาส อาจพบว่าประสิทธิภาพลดลงเป็นวิธีequals()
เปลี่ยนเป็นตอนนี้โดยค่าเริ่มต้นแล้ว ซึ่งระบบจะเรียกเมื่อกำหนดให้mutableStateOf()
คุณคืนค่าลักษณะการทำงานก่อนหน้าได้โดยการเพิ่มนโยบาย พารามิเตอร์
policy = referentialEqualityPolicy()
เพื่อเรียกไปยังmutableStateOf()
,ambientOf()
และsavedInstanceStateOf()
(Ic21a7)ตอนนี้
Row
และColumn
เปลี่ยนเป็นฟังก์ชันในบรรทัดแล้ว ซึ่งช่วยลดค่าใช้จ่ายในการใช้งาน (I75C10)
แก้ไขข้อบกพร่อง
- เลิกใช้งาน setViewContent แล้ว ควรใช้ setContent แทน (I7e497, b/160335130)
เพิ่ม MonotonicFrameAnimationClock ที่ให้คุณใช้ MonotonicFrameClock เป็น AnimationClockObservable เพื่อเชื่อมช่องว่าง ระหว่างนาฬิกาที่ใช้โครูทีนใหม่และ API ที่ยังคงใช้ ที่อิงจากนาฬิกา Callback
ตอนนี้เทียบเท่ากับ MonotonicFrameClock ของ ManualAnimationClock ManualFrameClock (I111c7, b/161247083)
Modifier.stateDraggable มีการแก้ไขทั้งหมด และเปลี่ยนชื่อ เป็น Modifier.swipeable มีการเริ่มใช้คลาส ScrollableState แบบใหม่และ DrawerState และ BottomDrawerState มีการเปลี่ยนโครงสร้างภายในโค้ดเพื่อรับค่า [Modal/Bottom]DrawerLayout ไม่ต้องใช้พารามิเตอร์ onStateChange อีกต่อไป (I72332, b/148023068)
เลิกใช้งาน Modifier.plus แล้ว โปรดใช้ Modifier.then แทน "จากนั้น" มีสัญญาณในการจัดลำดับมากกว่า ในขณะเดียวกันก็ห้ามพิมพ์
Modifier.padding().background() + anotherModifier
ทำให้เชนหลุดและอ่านยากขึ้น (Iedd58, b/161529964)เพิ่ม SubcomposeLayout แล้ว เป็นค่าพื้นฐานระดับต่ำที่ช่วยให้สร้างองค์ประกอบย่อยระหว่างการวัดค่าได้ หากเราต้องการใช้ค่าที่มีอยู่ภายหลังในระหว่างการวัดสําหรับองค์ประกอบของแผนผังย่อย ตัวอย่างเช่น ไม่ได้ติดตั้งใช้งาน WithConstraints โดยใช้ SubcomposeLayout (I25cc8)
Material FilledTextField ถูกเปลี่ยนชื่อเป็น TextField และ TextField พื้นฐานได้เปลี่ยนชื่อเป็น BaseTextField เพื่อให้สามารถค้นหาและใช้ API ที่ต้องการได้ง่ายที่สุด (Ia6242, b/155482676)
Modifier.drawBackground ได้เปลี่ยนชื่อเป็น Modifier.background (I13677)
เวอร์ชัน 0.1.0-dev15
22 กรกฎาคม 2020
ปล่อย androidx.compose.runtime:runtime-*:0.1.0-dev15
แล้ว เวอร์ชัน 0.1.0-dev15 มีคอมมิตเหล่านี้
การอัปเดตการขึ้นต่อกัน
- หากต้องการใช้ Compose เวอร์ชัน
0.1.0-dev15
คุณจะต้องอัปเดตทรัพยากร Dependency ตามข้อมูลโค้ดใหม่ที่แสดงด้านบนในการประกาศทรัพยากร Dependency
การเปลี่ยนแปลง API
เลิกใช้งานคำอธิบายประกอบ
@Model
แล้ว ใช้ State และ mutableStateOf แทนก็ได้ การตัดสินใจเกี่ยวกับการเลิกใช้งานนี้เกิดขึ้นหลังจากการพูดคุยอย่างรอบคอบแล้วเหตุผล
เหตุผลรวมถึงแต่ไม่จำกัดเพียงรายการต่อไปนี้
- ลดพื้นที่บนพื้นผิวของ API และแนวคิดที่เราต้องสอน
- มีความสอดคล้องกับชุดเครื่องมืออื่นๆ ที่คล้ายกันมากขึ้น (Swift UI, React, Flutter)
- ยกเลิกคำตัดสินได้ เรานำ
@Model
กลับมาได้ทุกเมื่อ - นำการใช้งานที่เป็นกรณีมุมออกและตอบคำถามที่ยากเกี่ยวกับการกำหนดค่า
@Model
เนื่องจากเราต้องจัดการ - คลาสข้อมูล
@Model
, เท่ากับ, แฮชโค้ด ฯลฯ - ฉันจะมีที่พักบางแห่งที่ "สังเกตได้" และคุณสมบัติอื่นๆ ไม่มีได้อย่างไร
- ฉันจะระบุความเท่าเทียมเชิงโครงสร้างเทียบกับการอ้างอิงที่จะใช้ในการสังเกตได้อย่างไร
- ลด "ความมหัศจรรย์" ในระบบ จะลดโอกาสที่ระบบจะคิดว่าระบบฉลาดกว่าที่เป็นอยู่ (เช่น รู้ว่าจำแนกรายการอย่างไร)
- ทำให้อ่านรายละเอียดของการสังเกตได้ง่ายขึ้น
- ปรับปรุงความสามารถในการเปลี่ยนโครงสร้างจากตัวแปร -> พร็อพเพอร์ตี้ในชั้นเรียน
- อาจช่วยให้คุณมีโอกาสทำการเพิ่มประสิทธิภาพเฉพาะรัฐที่สร้างสรรค์ขึ้นเอง
- มีความสอดคล้องกับระบบนิเวศอื่นๆ มากขึ้นและลดความคลุมเครือเกี่ยวกับการเปลี่ยนแปลงที่เปลี่ยนแปลงไม่ได้หรือช่วยให้เรา "ยอมรับสถานะที่เปลี่ยนแปลงได้"
หมายเหตุการย้ายข้อมูล
การใช้งาน
@Model
ที่มีอยู่เกือบทั้งหมดมีการเปลี่ยนแปลงเพียงเล็กน้อยด้วยวิธีใดวิธีหนึ่งจาก 2 วิธีต่อไปนี้ ตัวอย่างด้านล่างมีคลาส@Model
ที่มีพร็อพเพอร์ตี้ 2 รายการเพียงแค่ตัวอย่าง และมีการใช้ใน Composable@Model class Position( var x: Int, var y: Int ) @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
ทางเลือกที่ 1: ใช้
State<OriginalClass>
และสร้างสำเนาแนวทางนี้ทำได้ง่ายขึ้นด้วยคลาสข้อมูลของ Kotlin โดยพื้นฐานแล้ว ให้ตั้งค่าพร็อพเพอร์ตี้
var
ก่อนหน้านี้ทั้งหมดเป็นพร็อพเพอร์ตี้val
ของคลาสข้อมูล จากนั้นใช้state
แทนremember
จากนั้นกำหนดค่าสถานะให้กับสำเนาต้นฉบับที่โคลนโดยใช้วิธีการอำนวยความสะดวกcopy(...)
ของคลาสข้อมูลโปรดทราบว่าวิธีนี้จะใช้ได้เมื่อมีการเปลี่ยนแปลงเฉพาะคลาสที่มีการเปลี่ยนแปลงเฉพาะในขอบเขตเดียวกับที่มีการสร้างอินสแตนซ์
State
หากชั้นเรียนกลายพันธุ์ตัวเองเป็นการภายในโดยอยู่นอกขอบเขตการใช้งาน และคุณอาศัยผลการสังเกตดังกล่าว แนวทางต่อไปคือแนวทางที่ควรใช้data class Position( val x: Int, val y: Int ) @Composable fun Example() { var p by state { Position(0, 0) } PositionChanger( position=p, onXChange={ p = p.copy(x=it) } onYChange={ p = p.copy(y=it) } ) }
ทางเลือก 2: ใช้ mutableStateOf และผู้รับมอบสิทธิ์พร็อพเพอร์ตี้
วิธีนี้ทำได้ง่ายขึ้นด้วยการมอบสิทธิ์พร็อพเพอร์ตี้ของ Kotlin และ
mutableStateOf
API ซึ่งจะช่วยให้คุณสร้างอินสแตนซ์ MutableState ภายนอกองค์ประกอบได้ โดยพื้นฐานแล้ว ให้แทนที่พร็อพเพอร์ตี้var
ทั้งหมดของคลาสเดิมด้วยพร็อพเพอร์ตี้var
ด้วยmutableStateOf
เป็นผู้รับมอบสิทธิ์พร็อพเพอร์ตี้ วิธีนี้มีข้อดีตรงที่การใช้งานชั้นเรียนจะไม่เปลี่ยนแปลงเลย แต่จะเปลี่ยนเฉพาะการใช้งานภายในเท่านั้น อย่างไรก็ตาม ลักษณะการทำงานจะไม่เหมือนตัวอย่างเดิมโดยสมบูรณ์ เนื่องจากตอนนี้พร็อพเพอร์ตี้แต่ละรายการจะได้รับการสังเกต/ติดตามแยกกัน ดังนั้นการจัดองค์ประกอบใหม่ที่คุณเห็นหลังจากการเปลี่ยนโครงสร้างภายในโค้ดนี้อาจแคบลง (เป็นเรื่องที่ดี)class Position(x: Int, y: Int) { var x by mutableStateOf(x) var y by mutableStateOf(y) } // source of Example is identical to original @Composable fun Example() { var p = remember { Position(0, 0) } PositionChanger( position=p, onXChange={ p.x = it } onYChange={ p.y = it } ) }
(I409e8, b/152050010, b/146362815, b/146342522, b/143413369, b/135715219, {1263/143})
เปลี่ยนกลยุทธ์การสร้างโค้ดของคอมไพเลอร์ของ Compose ก่อนการเปลี่ยนแปลง คอมไพเลอร์การเขียนจะเปลี่ยนรูปแบบการเรียกไปยังฟังก์ชันที่ประกอบกันได้ จากการเปลี่ยนแปลงนี้ เราจึงเปลี่ยนรูปแบบการทำงานของฟังก์ชัน Composable และไม่เปลี่ยนแปลง Callsite (ส่วนใหญ่)
ซึ่งหมายความว่าตรรกะที่สื่อสารกับรันไทม์การเขียนส่วนใหญ่จะเกิดขึ้นที่จุดเริ่มต้นของส่วนเนื้อหาของฟังก์ชัน ไม่ใช่ที่ Callsite
การเปลี่ยนแปลงนี้ควรเป็นการเปลี่ยนแปลงที่เข้ากันได้กับต้นทางสำหรับการใช้งานการเขียนทั้งหมด ผู้ใช้การเขียนส่วนใหญ่ไม่ควรต้องอัปเดตโค้ดใดๆ จากการเปลี่ยนแปลงนี้
เพื่อที่จะรองรับงานนี้ ลายเซ็น JVM ของฟังก์ชัน Composable ทั้งหมดมีการเปลี่ยนแปลง ฟังก์ชัน Composable ที่ยอมรับพารามิเตอร์เดียวจะเปลี่ยนเป็นฟังก์ชันที่รับพารามิเตอร์ 3 รายการ พารามิเตอร์เพิ่มเติมคือ Composer ซึ่งเป็นจำนวนเต็ม "key" จำนวนเต็มบิตมาสก์ที่ใช้เผยแพร่ข้อมูลเมตาผ่านการเรียกใช้
ขณะนี้ Compose จะเปลี่ยนอาร์กิวเมนต์เริ่มต้นเป็นฟังก์ชัน Composable ด้วย โดยไม่เพิ่มภาระงานสังเคราะห์ที่เกินจากปกติของฟังก์ชันเอง ดังนั้นการเปลี่ยนแปลงนี้จะส่งผลให้มีการกำหนดฟังก์ชันน้อยลง
การเปลี่ยนแปลงพฤติกรรมโดยเจตนาที่ทราบซึ่งเกิดจากสิ่งต่อไปนี้
- การโทรบางครั้งจะข้ามจากที่ที่ไม่เคยทำมาก่อน
- นิพจน์ที่ประกอบกันได้ในนิพจน์อาร์กิวเมนต์เริ่มต้นได้รับการติดตามและจัดการอย่างถูกต้อง
งานนี้มีการเพิ่มประสิทธิภาพบางอย่าง: 1. ผลลัพธ์ของการเปรียบเทียบพารามิเตอร์จะเผยแพร่ผ่านการเรียกใช้กราฟไปยังฟังก์ชันที่ประกอบกันได้อื่นๆ ซึ่งจะส่งผลให้การเปรียบเทียบน้อยลงขณะรันไทม์ ลดขนาดตารางช่อง รวมถึงการข้ามฟังก์ชันที่ประกอบกันได้ซึ่งก่อนหน้านี้ไม่ได้ข้ามได้มากขึ้น 2. ระบบจะไม่เปรียบเทียบหรือจัดเก็บพารามิเตอร์ที่พิจารณาแล้วว่าเป็น "คงที่" ในเวลาคอมไพล์อีกต่อไป ซึ่งจะลดจำนวนการเปรียบเทียบและลดขนาดตารางช่อง 3. ระบบจะใช้โครงสร้างการควบคุมโฟลว์ของฟังก์ชันเพื่อลดจำนวนกลุ่มที่สร้างขึ้น การดำเนินการนี้จะลดขนาดตารางของสล็อตและทำให้การทำงานสำหรับรันไทม์ลดลง 4. พารามิเตอร์การจ่ายงานและตัวรับสัญญาณที่ไม่ได้ใช้กับฟังก์ชันจะไม่รวมอยู่ในการพิจารณาความสามารถในการข้ามของฟังก์ชันหากไม่ได้ใช้ภายในส่วนเนื้อหาของฟังก์ชัน
การเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นส่วนใหญ่เกี่ยวข้องกับ API ที่คอมไพเลอร์กำหนดเป้าหมายโดยตรง และการใช้งานการเขียนโดยทั่วไปจะไม่ได้รับผลกระทบ ดังนี้ 1. นำ Composer::startExpr ออกแล้ว 2. นำ Composer::endExpr ออกแล้ว 3. Composer::call เลิกใช้งานแล้ว 4. นำไฟล์ที่ไม่ใช่ภาษาวาร์ราร์โหลดมากเกินไปของ
key
ออกแล้ว โปรดใช้เวอร์ชันvararg
นับจากนี้ไป 5. เลิกใช้งานคำอธิบายประกอบ Pivotal แล้ว โปรดใช้key
เป็นการแทน 6. มีการเปลี่ยนแปลง ScopeUpdateScope::updateScope 7. RestartableFunction และRestartableFunctionN แล้ว เพื่อรวมพารามิเตอร์เวลาการคอมไพล์เพิ่มเติม (I60756, b/143464846)เพิ่ม SortWith และ removeRange ไปยัง MutableVector (Icccf7)
เพิ่มการใช้งานเมธอดเริ่มต้นสำหรับ CompositionLifecycleObserver (I24289)
ขณะนี้ Applier ต้องใช้เมธอด clear() ในการกำจัด งานประพันธ์เพลง (Ibe697)
เพิ่ม asMutableList() ใน MutableVector เพื่ออนุญาตให้ ไปยัง API สาธารณะได้โดยไม่ต้องคัดลอก รายการ (I298df)
เพิ่ม RememberCoroutineScope() แล้วเพื่อรับ CoroutineScope ในองค์ประกอบสำหรับการเปิดงานตามเหตุการณ์ต่างๆ (I0e264)
MutableVector เป็นคอลเล็กชันใหม่ที่ไม่ ใช้อินเทอร์เฟซการรวบรวมข้อมูลมาตรฐาน ช่วงเวลานี้ ของ Google ให้ความเร็วเหนือข้อกำหนดอื่นๆ และ มีไว้เพื่อการใช้งานภายในเท่านั้น (I8ebd6)
นำ
StableMutableList
และStableMutableMap
ออกชั่วคราวแล้ว เพื่อหลีกเลี่ยงปัญหาในเวอร์ชันการเขียน Kotlin ต้องใช้ เหล่านี้ อินเทอร์เฟซจะกลับมาใช้งานได้อีกครั้งเมื่อมีการอัปเดตการเขียนเป็นเวอร์ชัน ของ Kotlin ที่ไม่มีปัญหาขณะนี้
SnapshotStateList
และSnapshotStateMap
เป็นแบบสาธารณะแล้ว แต่จะแสดง เลิกใช้งานเมื่อกู้คืนStableMutableList
และStableMutableMap
แล้ว (Ia7769)เพิ่มฟังก์ชัน withFrameNanos ระดับบนสุดสำหรับเวลาของภาพเคลื่อนไหว (Ie34c5)
เลิกใช้งานคำอธิบายประกอบ @ที่ไม่ได้ติดตามแล้ว แทนที่ด้วย @ComposableContract(tracked=false) (Id211e)
RestartableFunction และ API ที่เชื่อมโยงได้เปลี่ยนชื่อเป็น ComposableLambda เป็นต้น การเปลี่ยนชื่อนั้นทำเพื่อสื่อสารว่าคลาสนี้มีประสิทธิภาพอย่างไรเมื่อแสดงในสแต็กเทรซ (I7eb25)
คำอธิบายประกอบ @Composable ใช้ไม่ได้ในชั้นเรียนแล้ว (Ia5f02)
Ambient<T>
เปลี่ยนเป็น @Stable แทนที่จะเป็น @Immutable (I0b4bb)ก่อนการเปลี่ยนแปลงนี้ ปลั๊กอินคอมไพเลอร์ของการเขียนจะสกัดกั้นการเรียกไปยังตัวสร้างภายในฟังก์ชัน @Composable หากมี (I5205a, b/158123804)
การ Compose ที่เรียบเรียงใหม่จะไม่ใช่สิ่งที่มีประโยชน์อีกต่อไป การจัดองค์ประกอบใหม่ส่วนใหญ่ควรเป็นผลมาจากการมอบหมาย MutableState สำหรับสิ่งอื่นนอกเหนือจากนี้ ขอแนะนำให้คุณใช้ฟังก์ชัน
invalidate
เพื่อทริกเกอร์การจัดองค์ประกอบขอบเขตปัจจุบันใหม่ (Ifc992)การสังเกตการณ์ไม่ใช่บทคัดย่อที่มีประโยชน์อีกต่อไป หากต้องการทำซ้ำ คุณสามารถจำลองการใช้งานได้โดยสร้างฟังก์ชัน Composable ซึ่งจะเรียกใช้พารามิเตอร์ lambda แบบ Composable เช่น
@Composable fun Observe(body: @Composable () -> Unit) = body()
(I40d37)@Direct เลิกใช้งานแล้วเพื่อใช้ @ComposableContract(restartable=false) (If4708) แทน
เพิ่มอะแดปเตอร์สำหรับ StateFlow ที่เพิ่งแนะนำซึ่งอนุญาตให้เติมค่าเริ่มต้นล่วงหน้าเพื่อให้สถานะที่แสดงผลเป็นค่าว่างไม่ได้ (I61dd8, b/156233789)
เพิ่มอะแดปเตอร์สำหรับ Flow แล้ว ตัวอย่างการใช้งาน: ค่า val ตาม flow.collectAsState() (If2198, b/153375923)
[Mutable]ย้ายโอเปอเรเตอร์ที่ได้รับมอบสิทธิ์พร็อพเพอร์ตี้ของรัฐไปยังส่วนขยายแล้ว เพื่อรองรับการเพิ่มประสิทธิภาพการมอบสิทธิ์พร็อพเพอร์ตี้ของ Kotlin 1.4 ผู้โทรจะต้องเพิ่ม เพื่อนำเข้าเพื่อใช้
by state { ... }
หรือby mutableStateOf(...)
ต่อไป (I5312C)ย้าย androidx.compose.ViewComposer ไปยัง androidx.ui.node.UiComposer แล้ว นำ androidx.compose.Emittable ออกแล้ว คอมโพเนนต์นี้ซ้ำซ้อนกับ ComponentNode นำ androidx.compose.ViewAdapters ออกแล้ว ซึ่งจะไม่ใช่ Use Case ที่รองรับอีกต่อไป Compose.composeInto เลิกใช้งานแล้ว โปรดใช้
setContent
หรือsetViewContent
แทน Compose.disposeComposition เลิกใช้งานแล้ว โปรดใช้เมธอดdispose
ในComposition
ที่แสดงผลโดยsetContent
แทน androidx.compose.Compose.subcomposeInto ได้ย้ายไปที่ androidx.ui.core.subcomposeInto ComponentNode#emitInsertAt เปลี่ยนชื่อเป็น ComponentNode#insertAt แล้ว ComponentNode#emitRemoveAt เปลี่ยนชื่อเป็น ComponentNode#removeAt แล้ว ComponentNode#emitMode เปลี่ยนชื่อเป็น ComponentNode#move (Idef00)อัปเดตแฟล็ก
ComposeFlags.COMPOSER_PARAM
เป็นtrue
ซึ่งจะเปลี่ยนกลยุทธ์การสร้างโค้ดสำหรับปลั๊กอินการเขียน การดำเนินการนี้จะทำให้มีการสร้างฟังก์ชัน @Composable ขึ้นพร้อมกับพารามิเตอร์สังเคราะห์เพิ่มเติม ซึ่งส่งผ่านไปยังการเรียก @Composable ที่ตามมาเพื่อให้รันไทม์จัดการการดำเนินการได้อย่างเหมาะสม นี่เป็นการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในไบนารีที่สำคัญ อย่างไรก็ตาม ควรรักษาความเข้ากันได้ระดับต้นทางในการใช้งานการเขียนที่ถูกคว่ำบาตรทั้งหมด (I7971C)การเปลี่ยนแปลงที่ส่งผลกับ Environments API โปรดดูรายละเอียดในบันทึกและเอกสาร
Ambient<T>
(I4c7ee, b/143769776)เพิ่ม UI-livedata - อาร์ติแฟกต์ใหม่ด้วยอะแดปเตอร์สำหรับ LiveData ตัวอย่างการใช้งาน: ค่า val ตาม LiveData.observeAsState() (Ie9e8c, b/150465596)
อะแดปเตอร์ Rx ที่ไม่มีค่าเริ่มต้นที่ชัดเจนเลิกใช้งานแล้ว การใช้ null อาจไม่ใช่ค่าเริ่มต้นที่ดีที่สุดเสมอไป ตัวอย่างเช่น เมื่อคุณมี "รายการ" จะเป็นการดีกว่าหากคุณเริ่มต้นด้วย emptyList() หรือค่าเริ่มต้นอื่นๆ ที่สมเหตุสมผล (I00025, b/161348384)
เพิ่ม ui-rxjava2 - อาร์ติแฟกต์ใหม่พร้อมอะแดปเตอร์สำหรับ RxJava2 ตัวอย่างการใช้งาน: ค่า val ตาม observable.applyAsState() (Ifab4b, b/153369097)
ตอนนี้สามารถใช้
savedInstanceState()
กับประเภทที่เว้นว่างได้ (I6847f, b/153532190)listSaver() และ MapSaver() ใหม่ที่ช่วยให้เขียนออบเจ็กต์ของ Save ที่กำหนดเองได้ง่ายขึ้น (I8cf68, b/152331508)
ฟังก์ชันใหม่: savedInstanceState() และ RememberSavedInstanceState() พารามิเตอร์เหล่านี้คล้ายกับ State() และ Remember() แต่มีการสนับสนุนสถานะอินสแตนซ์ที่บันทึกไว้ (If1987, b/152025209)
แก้ไขข้อบกพร่อง
runOnIdleCompose
เปลี่ยนชื่อเป็นrunOnIdle
(I83607)- Made LayoutNode รุ่นทดลอง (I4f2e9)
- androidx.ui.foundation.TextFieldValue และ เลิกใช้งาน androidx.ui.input.EditorValue แล้ว ฟิลด์ข้อความ FilledTextField และ CoreTextField ที่ใช้ Composable ที่ใช้ ประเภทนั้นก็เลิกใช้งานแล้วด้วย โปรดใช้ androidx.ui.input.TextFieldValue แทน (I4066d, b/155211005)
- นำ DrawBackground ที่เลิกใช้งานแล้วออก API เปลี่ยนไปใช้ส่วนขยาย DrawBackground API ใน Modifier เปลี่ยนโครงสร้างภายในโค้ดแล้ว สี พู่กัน และระบายสี การวาดพื้นหลัง การใช้งานเพื่อลดเส้นทางโค้ดด้วยเช่นกัน เป็นข้อกำหนดในการลบตัวปรับแต่งให้สร้างขึ้น เพื่อเป็นส่วนหนึ่งของการเขียน (I0343a)
- อัปเดตระดับสูงขึ้นแล้ว เขียน API ที่เปิดเผย Canvas ต่อ แสดง CanvasScope แทน การดำเนินการนี้จะนำ ความต้องการของผู้บริโภคในการรักษา เป็นเจ้าของออบเจ็กต์ Paint สำหรับผู้บริโภคที่ ยังคงต้องการเข้าถึง Canvas ก็สามารถใช้ส่วนขยาย DrawCanvas ที่ให้ผลลัพธ์ Callback ไปยังปัญหา ให้วาดคำสั่งด้วยฟังก์ชัน Canvas (I80afd)
- มีการเปลี่ยนแปลงด้วย WithConstraints ต่อท้าย lambda API จากนี้จะมีเพียง 2 พารามิเตอร์ แต่กลับมีขอบเขตตัวรับ ซึ่งนอกเหนือจากข้อจำกัดและการจัดวางDirection ยังมีคุณสมบัติ minWidth, maxWidth, minHeight และ maxHeight ใน Dp (I91b9a, b/149979702)
- เพิ่มตัวแก้ไขระยะห่างจากขอบแบบสมมาตรแล้ว (I39840)
- อัปเดต wrapContentWidth และ wrapContentHeight เพื่อคงการปรับแนวในแนวตั้งหรือแนวนอนแทนการจัดแนวใดๆ อัปเดตเครื่องแก้ไขแรงโน้มถ่วงให้ยอมรับการปรับแนวในแนวตั้งหรือแนวนอน มีการอัปเดตแถว คอลัมน์ และสแต็กเพื่อรองรับการปรับแนวอย่างต่อเนื่องแบบกำหนดเอง (Ib0728)
- โมดูลข้อความ UI เปลี่ยนชื่อเป็น ui-text-core (I57dec)
- ปรับปรุง DrawModifier API:
- สร้างขอบเขตตัวรับสำหรับDraw() ContentDrawScope
- นำพารามิเตอร์ทั้งหมดในDraw() ออก
- DrawScope มีอินเทอร์เฟซเดียวกันกับ CanvasScope เดิม
- ContentDrawScope มีเมธอดDrawContent() (Ibaced, b/152919067)
- เลิกใช้งาน ColoredRect แล้ว โปรดใช้
Box(Modifier.preferredSize(width, height).drawBackground(color))
แทน (I499fa, b/152753731) - เปลี่ยนตัวปรับแต่งและโอเปอเรเตอร์ด้วยฟังก์ชันส่วนขยายจากโรงงาน (I225e4)
- ขณะนี้สมาชิก RowScope และ ColumnScope สามารถเข้าถึงได้นอกแถวและคอลัมน์ (I3a641)
- เปลี่ยนชื่อ Layoutแบบยืดหยุ่น เป็น Layoutweight แล้ว เปลี่ยนชื่อพารามิเตอร์ที่เข้มงวดเพื่อเติมแล้ว (If4738)
- WithConstraints ได้รับพารามิเตอร์ LayoutDirection (I6d6f7)
- เปลี่ยนชื่อพื้นหลังเป็น DrawBackground และทำให้ตั้งให้จดจำเป็นค่าเริ่มต้น (Ia0bd3)
- แทนที่ ButtonStyle ด้วยฟังก์ชันที่แตกต่างกันและข้อความ (สตริง) ที่ถูกนำออกมากเกินไป ดูตัวอย่างที่อัปเดตสำหรับข้อมูลการใช้งาน (If63ab, b/146478620, b/146482131)
runOnIdleCompose
และrunOnUiThread
เป็นฟังก์ชันส่วนกลางแล้ว แทนเมธอดใน ComposeTestRule (Icbe8f)
การสนับสนุนภายนอก
- นำ API ที่ไม่จำเป็น เช่น Looper และ Handler ออกจากเลเยอร์พอร์ตรันไทม์ของ Compose (I6847d)
- เลิกใช้งาน
Flow<T>.collectAsState()
โดยไม่มีค่าเริ่มต้น โปรดใช้StateFlow<T>
หรือส่งค่าเริ่มต้นที่ชัดเจนแทน (I63f98, b/157674865)