รวบรวม Flow บน Android และ iOS
เชื่อม Flow เข้ากับ Compose และ Swift อย่างปลอดภัย
รวบรวม Flow บน Android และ iOS เป็นบทเรียน Kotlin Multiplatform Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Multiplatform Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
สองแอป หนึ่งกระแสข้อมูล
โค้ดที่ใช้ร่วมกันเปิดเผยกระแสข้อมูลหนึ่งสาย แต่แต่ละแพลตฟอร์มจะนำไปใช้งานต่างกัน เคล็ดลับคือ การรวบรวม กระแสข้อมูลเดียวกันนั้นด้วยวิธีดั้งเดิมของ Android และ iOS
Compose ชื่นชอบกระแสข้อมูล
บน Android, Jetpack Compose จะแปลง Flow ให้เป็นสถานะด้วย collectAsState และคอมโพสสิเบิลของคุณจะวาดใหม่โดยอัตโนมัติทุกครั้งที่มีค่าใหม่เข้ามา
val state by viewModel.uiState
.collectAsState()เคารพวงจรชีวิต
ควรใช้ collectAsStateWithLifecycle เพื่อให้การเก็บค่าหยุดชั่วคราวเมื่อหน้าจออยู่เบื้องหลัง ซึ่งช่วยประหยัดแบตเตอรี่และหลีกเลี่ยงการทำงานที่ไม่จำเป็น
val state by viewModel.uiState
.collectAsStateWithLifecycle()Swift มองไม่เห็น suspend
Flow แบบทั่วไปไม่สามารถเชื่อมต่อกับ Swift ได้ เพราะ collect เป็นการเรียกใช้แบบ suspend ดังนั้น Swift จึงต้องใช้ตัวห่อหุ้มที่รองรับการเรียกกลับแทน
ห่อหุ้ม Flow สำหรับ iOS
วิธีแก้ไขที่ใช้กันทั่วไปคือสร้าง ตัวห่อหุ้ม ขนาดเล็กที่สมัครรับค่าและส่งตัวจัดการการยกเลิกกลับมา iOS จะเรียกใช้ closure เมื่อมีค่าแต่ละค่าเข้ามา และหยุดเมื่อทำงานเสร็จ
fun watch(
onEach: (UiState) -> Unit
): Closeableใช้ CoroutineScope
ตัวห่อหุ้มจะเริ่มการเก็บค่าภายใน CoroutineScope ที่ตัวเองเป็นเจ้าของ เมื่อปิดตัวจัดการ การดำเนินการใน scope นั้นจะถูกยกเลิก ทำให้ไม่มีสิ่งใดรั่วไหลหลังจากหน้าจอถูกปิดไปแล้ว
SwiftUI สมัครรับค่า
จาก SwiftUI ให้เรียกตัวห่อหุ้มใน onAppear ส่งค่าแต่ละค่าเข้าไปยัง ObservableObject และยกเลิกใน onDisappear
SKIE ทำให้การเชื่อมต่อง่ายขึ้น
เครื่องมืออย่าง SKIE จะสร้าง API ของ Flow ที่เหมาะกับ Swift ให้โดยอัตโนมัติ นักพัฒนา iOS จึงเก็บค่าด้วยลำดับแบบอะซิงก์ของภาษาที่เป็นมาตรฐาน และไม่ต้องเขียนตัวห่อหุ้มเอง
ยกเลิกเสมอ
ไม่ว่าจะเชื่อมต่อด้วยวิธีใด โปรดตรวจสอบให้แน่ใจว่าการเก็บค่า ถูกยกเลิก เมื่อหน้าจอหายไป ตัวเก็บค่าที่ถูกทิ้งไว้จะยังทำงานต่อและใช้ทรัพยากรโดยไม่รู้ตัว
ตรรกะยังคงใช้ร่วมกัน
สังเกตรูปแบบนี้: มีเพียงชั้น การเก็บค่า ที่บางและแยกตามแพลตฟอร์ม ส่วนข้อมูล ตัวดำเนินการ และสถานะยังคงอยู่ในโค้ดที่ใช้ร่วมกันตามที่ควรจะเป็น 🤝
ข้อมูลเดียวกัน ประสบการณ์แบบเนทีฟ
ตอนนี้แอปทั้งสองตอบสนองต่อสตรีมเดียวกันทุกประการ แต่แต่ละแอปใช้ชุดเครื่องมือส่วนติดต่อผู้ใช้แบบ เนทีฟ ของตนเอง ความสมดุลนี้คือสิ่งที่ KMP ถูกสร้างมาเพื่อรองรับ
ตรวจสอบความเข้าใจ
ลองคิดดูว่าเหตุใด iOS จึงต้องมีตัวช่วยเพิ่มเติม
สรุป
คุณเก็บค่าจากสตรีมที่ใช้ร่วมกันหนึ่งสตรีมด้วยสองวิธี ได้แก่ Compose กับ collectAsStateWithLifecycle และ SwiftUI ผ่านตัวห่อหุ้มหรือ SKIE ตรรกะใช้ร่วมกัน ส่วนส่วนติดต่อผู้ใช้เป็นแบบเนทีฟ 🤝
คำถามที่พบบ่อย
บทเรียน “รวบรวม Flow บน Android และ iOS” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “รวบรวม Flow บน Android และ iOS” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Multiplatform Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Multiplatform Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “รวบรวม Flow บน Android และ iOS”
เชื่อม Flow เข้ากับ Compose และ Swift อย่างปลอดภัย คุณปฏิบัติ Kotlin Multiplatform Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Multiplatform Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Multiplatform Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “รวบรวม Flow บน Android และ iOS” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Multiplatform Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Multiplatform Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Flow ในโค้ด shared
- StateFlow สำหรับสถานะ UI แบบ shared
- ตัวดำเนินการ: map, filter, combine
- รวบรวม Flow บน Android และ iOS