หลังจากที่ Kotlin 1.1.0 ปล่อยออกมา
มี feature ที่น่าสนใจมาก ๆ คือ coroutine
โดย coroutine นั้นพัฒนาบน Rx, CompletableFuture, NIO, JavaFX และ Swing
แน่นอนว่าสามารถใช้งานบน Android และ JavaScript ได้
และ coroutine ได้นำแนวคิดมาจากภาษาอื่น ๆ ด้วย เช่น
Generator/yield จากภาษา Python
Channel/select จากภาษา Go
Async/Await จากภาษา C#
ดังนั้นลองนำมาใช้งานกันหน่อย
ซึ่งใช้กับการพัฒนา Android app กันไปเลย
ในการพัฒนา Android app นั้นสิ่งที่ขาดไปไม่ได้เลยก็คือ
การจัดการข้อมูลผ่านระบบ Network รวมทั้งงานต่าง ๆ ผ่านระบบ I/O เช่นการดึงข้อมูลจาก REST API เช่นการดึงรูปภาพมาแสดงผล ซึ่งสิ่งที่นักพัฒนาทุกคนต้องจัดการให้ได้คือเรื่องของ Thread การทำงานเหล่านี้ต้องไม่ไปขัดขวางการทำงานของ UI Thread หรือไป block การทำงานของ UI นั่นเอง มิเช่นนั้น app จะ crash ได้ ( App XXX หยุดแล้ว ) หรือแม้แต่การทำงานใน Background thread ก็อย่าไปยุ่งกับการทำงานของ UI เช่นกัน มิเช่นนั้นก็จะมีปัญหาเช่นเดียวกัน โดยวิธีการจัดการก็มีหลากหลายมาก ๆ เพื่อทำให้การพัฒนา app ง่ายและสะดวกมากยิ่งขึ้น ยกตัวอย่างเช่น- จัดการ Thread ด้วยตัวเอง มันสนุกมาก ๆ
- ใช้งาน AsyncTask ของ Android
- ใช้งานพวก Callback ตัวอย่างเช่นการใช้งาน Retrofit เป็นต้น
- ใช้งานพวก Rx เช่น AndroidRx เป็นต้น
- ใช้งาน AsyncAwait