Kotlin Anko Coroutines

0
131
Why Kotlin better than Java For Android Development
Why Kotlin better than Java For Android Development

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

Loading Facebook Comments ...
Loading Disqus Comments ...