カスタムコルーチンスコープの作成
CoroutineScopeは実装することが出来る。
interface CoroutineScope
CoroutineScope概要
launch
やasync
といった全てのコルーチンビルダーはCoroutineScope
を拡張し、全ての要素とキャンセルを自動的に伝播するために、そのcoroutineContext
を継承する。
単独のスコープインスタンスを取得する方法は、CoroutineScope()
もしくはMainScope()
ファクトリ関数である。
これらが必要なくなった際は、スコープのキャンセルに対して注意を取り計らう。
追加的なcontext要素は、[plus](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/plus.html)
演算子を使うことで追加することが出来る。
カスタムコルーチンの作成
import kotlinx.coroutines.* import kotlin.coroutines.* class CustomScope : CoroutineScope { // ルートjob val job = Job() override val coroutineContext: CoroutineContext get() = job // + Dispatchers.IO Dispacherを指定しなかった場合は、Dispachers.Defaultが使用される fun <T> delayRun(f: ()->T): Job { // launchメソッドが自動導出される return launch { delay(1000) f() } } }
launch
メソッドなどが自動導出される