0Pricing
Android Academy · บทเรียน

พื้นฐาน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. พื้นฐาน Coroutine และขอบเขต
  2. viewModelScope และ Dispatchers
  3. พื้นฐาน Kotlin Flow
  4. StateFlow และ SharedFlow
← กลับไปที่ Android Academy