Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 在Android中用Kotlin的Anko運行後台任務(KAD 09),kotlinanko

在Android中用Kotlin的Anko運行後台任務(KAD 09),kotlinanko

編輯:關於android開發

在Android中用Kotlin的Anko運行後台任務(KAD 09),kotlinanko


作者:Antonio Leiva

時間:Jan 19, 2017

原文鏈接:https://antonioleiva.com/anko-background-kotlin-android/

 

Anko是由Jetbrains用Kotlin開發的Android庫,它可以用於很多不同的方面。它的主要特性是使用DSL代碼創建視圖

 

雖然這可能是很有趣的,然而事實是我很久以來一直很好地使用XML。所以還沒有太多地試用這一特性。

 

其實它還有其他非常有用的特性,這就是我今天要告知你它是十分酷的原因。

 

Anko用於執行後台任務

 

在Android中,主線程經常被其之外的操作運行而阻塞。

 

從幾個提供框架(如AsyncTask或Loader)到庫,有成千上萬選擇。有些為此使用RxJava。

 

所有有效的選項都有其自身的優劣。

 

但它們之中大多數都是非常復雜的,就算是實現簡單的在主線程之外做一些繁重任務。

 

Anko利用Kotlin能力提供簡單輕量的解決方案,從長時間運行任務中釋放主線程。

 

在你的項目添加依賴關系

 

首先,包含依賴關系。

 

如Anko做許多事一樣,庫的規模失控了。所以需要決定將其拆分。

 

例如,你僅需要導入:

1 compile 'org.jetbrains.anko:anko-common:0.9'

 

在後台線程運行任務

 

如果你記得,在前一篇文章中我們實現一個非常基本的doAsync函數,它能夠在後台運行。Anko能夠用執行上下文來完成一件事或其他事。我們稍後會見到一個例子。

 

現在,代碼非常類似這樣:

1 doAsync {
2     var result = runLongTask()
3 }

 

但是,我們怎樣返回到主線程?

 

返回主線程

 

這是非常簡單的。你只需在doAsync內部加入uiThread代碼塊,它將運行主線程。

1 doAsync {
2     var result = runLongTask()
3     uiThread {
4         toast(result)
5     }
6 }

 

toast() 是Anko提供的另一個有用的函數,它簡化了我們在APP中顯示消息的方法。

 

但是重要的是uiThread部分。這是運行在主線程。

 

你知道了嗎?如果一個Activity調用doAsync,那麼如果該Activity消亡(isFinishing返回true)uiThread代碼是不會執行的。這樣,我們就避免了AsyncTask經常出現的錯誤或其他沒有注意activity生命周期的任何回調函數。

 

結論

 

如你所見,Anko提供了一組共用程序,在我們編寫Android APP簡化我們的工作。還有其他許多,如對話的創建或數據庫的維護,我可以在接下來的文章讀到這些。

 

但是,如果你真想要冒險用Kotlin創建APP,那麼你可以從我的免費指南開始,它將幫助你用Kotlin創建你的第一個Android項目

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved