พื้นฐาน Kotlin Flow
ปล่อยและรวบรวมสตรีมข้อมูล
พื้นฐาน Kotlin Flow เป็นบทเรียน Android Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Android Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
โฟลว์คืออะไร
โฟลว์คือกระแสข้อมูลแบบไม่พร้อมกันที่ปล่อยค่าหลายค่าตลอดเวลา ลองนึกภาพว่าเป็นลำดับข้อมูลที่หยุดพักได้ ซึ่งคุณสามารถแปลงและเก็บค่าได้
การสร้างโฟลว์
ตัวสร้าง flow { } ช่วยให้คุณ emit ค่าได้ โดยอาจหยุดพักระหว่างค่าแต่ละค่า
fun numbers(): Flow<Int> = flow {
for (i in 1..3) {
delay(100)
emit(i)
}
}การเก็บค่าจากโฟลว์
โฟลว์จะไม่ทำอะไรจนกว่าคุณจะเก็บค่าจากมัน การเก็บค่าเป็นการดำเนินการแบบ suspend จึงต้องทำงานในคอร์รูทีน
scope.launch {
numbers().collect { value ->
println(value)
}
}กระแสข้อมูลแบบเย็น
โฟลว์เป็นแบบเย็น: บล็อกตัวสร้างจะเริ่มทำงานใหม่สำหรับผู้เก็บค่าแต่ละราย ผู้เก็บค่าสองรายจะได้รับลำดับข้อมูลอิสระของตนเองตั้งแต่ต้น
การแปลงด้วย map และ filter
ตัวดำเนินการจะแปลงค่าที่ปล่อยออกมาแบบขี้เกียจ โดยทำงานเมื่อมีการเก็บค่าเท่านั้น
numbers()
.map { it * 10 }
.filter { it > 10 }
.collect { println(it) }ตัวดำเนินการเพิ่มเติม
take(n)— รับเฉพาะค่า n ค่าแรกonEach— ผลข้างเคียงสำหรับค่าแต่ละค่าdistinctUntilChanged— ข้ามค่าที่ซ้ำกัน
การจัดการข้อผิดพลาด
ดักจับข้อยกเว้นจากต้นทางด้วยตัวดำเนินการ catch
numbers()
.map { riskyTransform(it) }
.catch { e -> emit(-1) }
.collect { println(it) }การตอบสนองเมื่อเสร็จสิ้น
ใช้ onCompletion เพื่อเรียกใช้โค้ดเมื่อโฟลว์ทำงานเสร็จสิ้นหรือถูกยกเลิก
numbers()
.onCompletion { println("done") }
.collect { println(it) }การเปลี่ยนเธรดของผู้ผลิตข้อมูล
ใช้ flowOn เพื่อให้ต้นทางทำงานบนตัวจัดส่งงานที่กำหนด โดยไม่ส่งผลต่อตัวเก็บค่า
fun load(): Flow<Data> = flow {
emit(readFromDisk())
}.flowOn(Dispatchers.IO)ตัวดำเนินการปลายทาง
ตัวดำเนินการบางรายการจะจบโฟลว์และส่งคืนค่า เช่น toList, first หรือ reduce ตัวดำเนินการเหล่านี้เป็นฟังก์ชัน suspend
val all: List<Int> = numbers().toList()จุดเด่นของโฟลว์ใน Android
โฟลว์เหมาะสำหรับจำลองทุกสิ่งที่ปล่อยค่าออกมาตามเวลา เช่น การเปลี่ยนแปลงฐานข้อมูล (Room) การอัปเดตตำแหน่ง การค้นหาขณะพิมพ์ และการรวมแหล่งข้อมูลหลายแหล่ง
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับพื้นฐานโฟลว์
ทบทวน
คุณได้เรียนรู้ว่า:
flow { emit(...) }สร้างกระแสข้อมูลแบบไม่พร้อมกัน- โฟลว์เป็นแบบเย็นและจะทำงานเมื่อมีการเก็บค่าเท่านั้น
- แปลงข้อมูลด้วย
map/filterและจัดการข้อผิดพลาดด้วยcatch flowOnกำหนดตัวจัดส่งงานของผู้ผลิตข้อมูล
คำถามที่พบบ่อย
บทเรียน “พื้นฐาน Kotlin Flow” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “พื้นฐาน Kotlin Flow” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Android Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Android Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “พื้นฐาน Kotlin Flow”
ปล่อยและรวบรวมสตรีมข้อมูล คุณปฏิบัติ Android Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Android Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Android Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “พื้นฐาน Kotlin Flow” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Android Academy นี้ได้ไหม
ได้ บทเรียน Android Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- พื้นฐาน Coroutine และขอบเขต
- viewModelScope และ Dispatchers
- พื้นฐาน Kotlin Flow
- StateFlow และ SharedFlow