Kotlin Anko Coroutines is utilities based on the kotlinx.coroutines library.
Using Anko Coroutines in your project
Add the anko-coroutines
dependency to your build.gradle
:
dependencies { compile "org.jetbrains.anko:anko-coroutines:$anko_version" }
Listener helpers
asReference()
If your asynchronous API does not support cancellation, your coroutine may be suspended for an indefinite time period. As a coroutine holds the strong references to captured objects, capturing the instance of Activity
or Fragment
instance may cause a memory leak.
Use asReference()
in such cases instead of the direct capturing:
suspend fun getData(): Data { ... } class MyActivity : Activity() { fun loadAndShowData() { // Ref<T> uses the WeakReference under the hood val ref: Ref<MyActivity> = this.asReference() async(UI) { val data = getData() // Use ref() instead of this@MyActivity ref().showData() } } fun showData(data: Data) { ... } }
bg()
You can easily execute your code on the background thread using bg()
:
fun getData(): Data { ... } fun showData(data: Data) { ... } async(UI) { val data: Deferred<Data> = bg { // Runs in background getData() } // This code is executed on the UI thread showData(data.await()) }
In next article we discuss about Anko Layout.
Share your thoughts