在Android中用Kotlin的Anko運行背景工作(KAD 09)

來源:互聯網
上載者:User

標籤:選擇   res   簡單   images   oid   src   今天   androi   文章   

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項目

 

在Android中用Kotlin的Anko運行背景工作(KAD 09)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.