編輯:關於android開發
作者:Antonio Leiva
時間:Jan 19, 2017
原文鏈接:https://antonioleiva.com/anko-background-kotlin-android/
Anko是由Jetbrains用Kotlin開發的Android庫,它可以用於很多不同的方面。它的主要特性是使用DSL代碼創建視圖。
雖然這可能是很有趣的,然而事實是我很久以來一直很好地使用XML。所以還沒有太多地試用這一特性。
其實它還有其他非常有用的特性,這就是我今天要告知你它是十分酷的原因。
在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項目。
谷歌電子市場9--詳情界面,谷歌電子市場9-- 1.詳情頁(HomeDetailActivity) @Override protected void onCreate(
android:如何在TextView實現圖文混排 我們通常在TextView文本中設置文字。可是如何設置圖文混排呢? 我就在這裡寫一個例子 。我們需要用到一點簡單的
Eclipse開發Android項目安裝配置,eclipseandroid在windows安裝Android的開發環境不簡單也說不上算復雜,本文寫給第一次想在自己Wind
Android 內存洩漏的幾種可能總結 Java是垃圾回收語言的一種,其優點是開發者無需特意管理內存分配,降低了應用由於局部故障(segmentation