0Pricing
Jetpack Compose Academy · บทเรียน

collectAsStateWithLifecycle

สังเกตสถานะของ ViewModel อย่างปลอดภัยใน Compose

collectAsStateWithLifecycle เป็นบทเรียน Jetpack Compose Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Jetpack Compose Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

การสังเกต Flow ใน Compose

ViewModel ของคุณเปิดเผยสถานะเป็น Flow และ Composable ของคุณต้องเปลี่ยนสตรีมนั้นให้เป็นค่าที่ Compose อ่านและตอบสนองได้

แนวทางที่ตระหนักถึงวงจรชีวิต

ใช้ collectAsStateWithLifecycle() เพื่อรวบรวม StateFlow เป็นสถานะของ Compose โดยเคารพวงจรชีวิตของหน้าจอ 🔋

val ui by vm.state.collectAsStateWithLifecycle()

เหตุใดจึงไม่ใช้ collectAsState

collectAsState() แบบปกติจะรวบรวมข้อมูลต่อไปแม้แอปอยู่เบื้องหลัง ทำให้เสียทรัพยากร ส่วนรุ่นที่ตระหนักถึงวงจรชีวิตจะหยุดชั่วคราวแทน

หยุดเมื่ออยู่เบื้องหลัง

เมื่อหน้าจอหยุด การรวบรวมข้อมูลก็หยุดด้วย และเมื่อกลับมาอยู่เบื้องหน้า การรวบรวมข้อมูลจะทำงานต่อ ช่วยประหยัดแบตเตอรี่และหลีกเลี่ยงการอัปเดตที่ไม่จำเป็น

การอ่านผลลัพธ์

การเรียกนี้ส่งคืน State ซึ่งคุณอ่านด้วย by ทำให้ได้ค่าปกติที่เรียกใช้การจัดองค์ประกอบใหม่ทุกครั้งที่ Flow ส่งค่าออกมา

val ui by vm.state.collectAsStateWithLifecycle()
Text(ui.title)

เพิ่มการพึ่งพา

ตัวช่วยนี้อยู่ในส่วนประกอบรันไทม์ ให้เพิ่ม lifecycle-runtime-compose เพื่อให้ฟังก์ชันนี้พร้อมใช้งานใน Composable ของคุณ

implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")

เลือกสถานะขั้นต่ำ

ตามค่าเริ่มต้น การรวบรวมข้อมูลจะทำงานเมื่อสถานะเป็นอย่างน้อย STARTED คุณสามารถลดเกณฑ์นี้ได้ แต่ STARTED เป็นตัวเลือกที่ปลอดภัยและแนะนำ

ทำงานคู่กับ StateFlow

สิ่งนี้เหมาะอย่างยิ่งกับ StateFlow ซึ่งมีค่าปัจจุบันอยู่เสมอ ทำให้หน้าจอมีสิ่งให้แสดงทันทีที่ปรากฏ

ตรวจสอบสถานะเพื่อเลือกการแสดงผล

เมื่อรวบรวมข้อมูลแล้ว ให้ตรวจสอบ UiState เพื่อแสดงสถานะกำลังโหลด สำเร็จ หรือเกิดข้อผิดพลาด โดยทั้งหมดขับเคลื่อนด้วยค่าล่าสุดจาก ViewModel

if (ui.isLoading) Spinner() else Content(ui.items)

ปลอดภัยกว่าการรวบรวมข้อมูลด้วยตนเอง

คุณจึงไม่ต้องเริ่มและยกเลิกการรวบรวมข้อมูลด้วยตนเอง ตัวช่วยจะเชื่อมโยงงานนี้กับการจัดองค์ประกอบและวงจรชีวิตให้คุณ ✨

ค่าเริ่มต้นสมัยใหม่

สำหรับหน้าจอ Compose ใหม่ collectAsStateWithLifecycle() เป็นวิธีที่แนะนำให้ใช้สังเกตสถานะของ ViewModel อย่างปลอดภัยและมีประสิทธิภาพ

ตรวจสอบอย่างรวดเร็ว

ตรวจสอบว่าเหตุใดจึงควรใช้ตัวรวบรวมข้อมูลที่ตระหนักถึงวงจรชีวิต

สรุปทบทวน

สังเกตสถานะของ ViewModel ด้วย collectAsStateWithLifecycle(): ฟังก์ชันนี้รวบรวม StateFlow เป็นสถานะของ Compose หยุดชั่วคราวเมื่ออยู่เบื้องหลัง และเป็นค่าเริ่มต้นสมัยใหม่

คำถามที่พบบ่อย

บทเรียน “collectAsStateWithLifecycle” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “collectAsStateWithLifecycle” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Jetpack Compose Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Jetpack Compose Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “collectAsStateWithLifecycle”

สังเกตสถานะของ ViewModel อย่างปลอดภัยใน Compose คุณปฏิบัติ Jetpack Compose Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Jetpack Compose Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Jetpack Compose Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “collectAsStateWithLifecycle” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Jetpack Compose Academy นี้ได้ไหม

ได้ บทเรียน Jetpack Compose Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เหตุใด ViewModel จึงคงอยู่เมื่อหมุนหน้าจอ
  2. viewModel() ใน Composable
  3. จำลองคลาสข้อมูล UiState
  4. collectAsStateWithLifecycle
← กลับไปที่ Jetpack Compose Academy