2017-03-06 4 views

答えて

7

更新:

runが廃止され、代わりにwithContextを使用する必要があります。 0.20:

async(CommonPool) { 
    ... 
    withContext(UI) { 
     ... 
    } 
} 

の詳細な作業例このソリューションの進化に興味のある人は、私はそれを残しておきます。


コルーチンライブラリがバージョン0.13にアップデートされましたので、更新:

あなたは今のAndroid固有のUIコルーチンのコンテキストをインポートし、このようにそれを使用するために、あなたのGradleにcompile 'org.jetbrains.kotlinx:kotlinx-coroutines-android:0.13'への依存関係を追加することができます。

以下の元の回答の時点で必要だったように、独自のコルーチンのディスパッチャーをもう定義する必要はありません。


オリジナルの答え:

それは次のように動作するはずです:

async(CommonPool) { 
    ... 
    run(MainThread) { 
     ... 
    } 
} 

問題は今、メインに戻りますMainThreadのない標準の実装がないことですAndroidのスレッド(これは今後リリースされる予定です)ですので、あなた自身で行う必要があります:

val MainThread = object : Executor { 
    private val mHandler = Handler(Looper.getMainLooper()) 

    override fun execute(command: Runnable) { 
     mHandler.post(command) 
    } 
}.toCoroutineDispatcher() 
+1

ジャストノート: 'ラン(UI){...}' が廃止され、 'withContext(UI){...}' を代わりに使用する必要があります。 –

+0

@PepaNovotný良いキャッチ!これがankoのどのバージョンで起こったのですか? – Robin

+1

https://github.com/Kotlin/kotlinx.coroutines/issues/134 –

関連する問題