作者: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做许多事一样,库的规模失控了。所以需要决定将其拆分。

例如,你仅需要导入:

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

在后台线程运行任务

如果你记得,在前一篇文章中我们实现一个非常基本的doAsync函数,它能够在后台运行。Anko能够用执行上下文来完成一件事或其他事。我们稍后会见到一个例子。

现在,代码非常类似这样:

 doAsync {
var result = runLongTask()
}

但是,我们怎样返回到主线程?

返回主线程

这是非常简单的。你只需在doAsync内部加入uiThread代码块,它将运行主线程。

 doAsync {
var result = runLongTask()
uiThread {
toast(result)
}
}

toast() 是Anko提供的另一个有用的函数,它简化了我们在APP中显示消息的方法。

但是重要的是uiThread部分。这是运行在主线程。

你知道了吗?如果一个Activity调用doAsync,那么如果该Activity消亡(isFinishing返回true)uiThread代码是不会执行的。这样,我们就避免了AsyncTask经常出现的错误或其他没有注意activity生命周期的任何回调函数。

结论

如你所见,Anko提供了一组共用程序,在我们编写Android APP简化我们的工作。还有其他许多,如对话的创建或数据库的维护,我可以在接下来的文章读到这些。

但是,如果你真想要冒险用Kotlin创建APP,那么你可以从我的免费指南开始它将帮助你用Kotlin创建你的第一个Android项目

最新文章

  1. Android笔记——Bundle类的作用
  2. VIM编辑器常用命令
  3. iOS 标识
  4. 3D跑酷遇到的问题
  5. 模仿QQ空间 网页设计
  6. javaSE第十一天
  7. Jquery实现文本框输入提示
  8. HTML5标准终于来了,看什么书学习最好??????
  9. 基于strpos()函数的判断用户浏览器方法
  10. html 表单初步学习
  11. LVM(1)
  12. AtCoder Regular Contest 075
  13. freemarker报错之九
  14. 基于touch.js 左滑删除功能
  15. 《ERP系统修正数据的sql文件》
  16. Spring-WebSocket
  17. “全栈2019”Java多线程第三十六章:如何设置线程的等待截止时间
  18. lammps模拟化学反应(1)
  19. Promise原理剖析
  20. linux命令的笔记

热门文章

  1. Unity3d之shaderLab内置变量
  2. away3d 汽车路线编辑器
  3. 关于bool和BOOL的区别
  4. [Unity Shader]ShaderForge制作Shader
  5. 23、手把手教你Extjs5(二十三)模块Form的自定义的设计[2]
  6. ios UIKit动力 分类: ios技术 2015-07-14 12:55 196人阅读 评论(0) 收藏
  7. 【转】10款GitHub上最火爆的国产开源项目
  8. box2d中的物理世界
  9. 安卓 listview与arrayadapter
  10. c#第5章 变量的更多内容 隐式和显式转换、枚举、结构、数组、