2023年12月4日月曜日

Android Kotlin Coroutineを並行に実行する実装を解説

どうも。どっことです。今回はKotlin Coroutineの並行実行する処理の実装方法について解説していきます。

Kotlin Coroutineを並列に実行する

非同期処理をとっても素敵に実装できるKotlin Coroutineですが、いくつかの処理を同時に実行したいようなケースにも対応することができます。APIによる通信やデータベースデータの永続化といった、時間がかかる処理をできるだけ短縮していきましょう。

実装方法

実装だけなら以下の2パターンで実現することができます。

async/awaitによる実装

ひとつはasync/awaitを使って実装する方法です。

viewModelScope.launch {
    val apiList = listOf(
        // async でコルーチンを生成 その中でAPIを実行する
        async { api1() },
        async { api2() },
        async { api3() },
    )
    // すべてのコルーチンを実行。全部終わるまで待つ。
    apiList.awaitAll()
}

launch/joinAllによる実装

もうひとつはlaunch/joinAllを使って実装する方法です。

viewModelScope.launch {
    // lanuch でコルーチンを作成し、その中でAPIを実行する。
    val apiJobsList = listOf(
        launch { api1() },
        launch { api2() },
        launch { api3() },
    )
    // すべてのコルーチンを実行。全部終わるまで待つ。
    apiJobsList.joinAll()
}

まとめ

今回は、Kotlin Coroutineによる処理を並列実行する実装について解説しました。ユーザの待ち時間を減らせるように活用していただけると幸いです。

参考

移行予定

どうも。どっことです。 タイトルの通りですが、諸事情により GitHubPage に移行予定です。 https://mkt120.github.io/ この備忘録に記載の内容を転記しつつ、今後はこちらのページを更新していく予定です。