在Android中用Kotlin的Anko运行后台任务(KAD 09)
时间: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项目。
在Android中用Kotlin的Anko运行后台任务(KAD 09)的更多相关文章
- 在android中用跑马灯的效果显示textview
大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容. 下面我们就来介绍一种方法来实现在android中用跑马灯 ...
- [Android]使用Kotlin开发Android(二)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4829007.html [TOC] 使用Kotlin+OkHtt ...
- Google Android Studio Kotlin 开发环境配置
Google 近日开发者大会宣布Kotlin成为Android开发的第一级语言,即Android官方开发语言,可见Google对Kotlin的重视,本文就介绍一下Android Studio下的Kot ...
- Google Android Studio Kotlin
Google Android Studio Kotlin 开发环境配置 Google 近日开发者大会宣布Kotlin成为Android开发的第一级语言,即Android官方开发语言,可见Google对 ...
- 在Android中用纯Java代码布局
感谢大佬:https://www.jianshu.com/p/7aedea560f16 在Android中用纯Java代码布局 本文的完成了参考了一篇国外的教程,在此表示感谢. Android中的界面 ...
- Android的Kotlin秘方(I):OnGlobalLayoutListener
春节后,又重新“开张”.各位高手请继续支持.谢谢! 原文标题:Kotlin recipes for Android (I): OnGlobalLayoutListener 原文链接:http://an ...
- android中用get和post方式向服务器提交请求
通过get和post方式向服务器发送请求首先说一下get和post的区别get请求方式是将提交的参数拼接在url地址后面,例如http://www.baidu.com/index.jsp?num=23 ...
- 【Android Developers Training】 2. 运行你的应用
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- Android 创建单独的服务运行在后台(无界面)
转自:https://blog.csdn.net/a704225995/article/details/56481934 今天项目有个需求是,开启一个服务单独运行在后台,而且还不能有界面,在度娘搜索了 ...
随机推荐
- HTML知识点
1. 首页布局 // 顶部DIV#top{ position:absolute; top:; left:; width:100%; height:15%; overflow:hidden; margi ...
- Xcode制作插件
转发至:https://onevcat.com/2013/02/xcode-plugin/ Xcode 4 插件制作入门 本文欢迎转载,但烦请保留此行出处信息:http://www.onevcat.c ...
- CSS——z-index
1.特性 ①z-index的值表示谁压着谁.值大的压住值小的. ②只有定位的元素才有z-index 值,也就是说,浮动不可以,相对定位,绝对定位,固定定位都可以. ③z-index值没有单位,是一个正 ...
- File和byte[]转换
http://blog.csdn.net/commonslok/article/details/9493531 public static byte[] File2byte(String filePa ...
- selenium firefox
https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG https://github.com/mozilla/geckodr ...
- 用Quick Cocos2dx做一个连连看(一)
呵呵,不知道能不能坚持下来,先写着吧. 预备知识:Quick Cocos2dx 2.2.5基本知识 或者 Cocos2dx基本知识, lua入门 开发工具:Sublime Text 2.0/3.0 原 ...
- Objective-c学习笔记3
objective-c代码块多并发 1.代码块对象是对C语言中函数的扩展,除了函数中的代码,代码块还包含有变量绑定,代码块有时也被称为闭包 2.代码块包含两种绑定类型,自动绑定使用的是栈空间,托管绑定 ...
- maven 阿里云节点,速度快
修改maven根目录下的conf文件夹中的setting.xml文件. <mirrors> <mirror> <id>alimaven</id> < ...
- windows server 2012 AD 活动目录部署系列(五)备份和还原域控制器
在前篇博文中,我们介绍了用户资源的权限分配,用户只要在登录时输入一次口令,就能访问基于该域所分配给他的所有资源. 但是我们需要考虑一个问题:万一域控制器坏了怎么办?!如果这个域控制器损坏了,那用户登录 ...
- c#中怎么求百分比
string Scorepercent = (lowScoreNum*1.0/ ScoreNum).ToString("P");//百分比 ToString("P&quo ...