私は今日AndroidでKotlinコルーチンを使い始めました。そして、私は、Ankoが独自のヘルパーメソッドを持っていることに気付きました。私はなぜasReference()
が存在するのか理解していますが、なぜbg()
が、コアコルーチンのlibにはすでにasync()
があるのかわかりません。AndroidのKotlinコルーチン:async()の代わりにAnkoのbg()を使用する理由
bg()
コードは非常に簡単であり、それはasync()
内部を使用しています。
@PublishedApi
internal var POOL = newFixedThreadPoolContext(2 * Runtime.getRuntime().availableProcessors(), "bg")
inline fun <T> bg(crossinline block:() -> T): Deferred<T> = async(POOL) {
block()
}
のでbg()
代わりのasync()
を使用する利点は何ですか? async()
はAndroidアプリのために何らかの形で非効率的ですか?
Answer @ s1m0nw1のおかげで、 'async'はプールを提供する必要はありません。オプションで' CommonPool'をデフォルトで使用していますので、 'bg'の利点は何ですか?プール? – Franco
はい、あなたは 'CommonPool'を制御できません、そうですか?たぶん、 'POOL'は何らかの形で制御される必要があります。それで、彼らは 'bg'で使われているプールインスタンスを定義しています。 – s1m0nw1
あなたは"多分 "私はそれがあなたの側の推測だと思ったので@ s1m0nw1。私はすでにコードから別のプールを使用していることを知ることができました。その理由を説明できるように質問を投稿しました。もう一度お返事ありがとうございますが、私は 'bg'を使用する正当な理由があるかどうか、その理由をもっと具体的に知る必要があります。 – Franco