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.

By Vaclav Souhrada

Android Developer | Kotlin enthusiast | Czech Kotlin User Group organizer

Share your thoughts

Leave a Reply

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