作者: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项目

在Android中用Kotlin的Anko运行后台任务(KAD 09)的更多相关文章

  1. 在android中用跑马灯的效果显示textview

    大家好,在我们通常的android project中,通常需要用到textview这一个布局文件,并且对于这一个显示布局所需要的文本文字内容. 下面我们就来介绍一种方法来实现在android中用跑马灯 ...

  2. [Android]使用Kotlin开发Android(二)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4829007.html [TOC] 使用Kotlin+OkHtt ...

  3. Google Android Studio Kotlin 开发环境配置

    Google 近日开发者大会宣布Kotlin成为Android开发的第一级语言,即Android官方开发语言,可见Google对Kotlin的重视,本文就介绍一下Android Studio下的Kot ...

  4. Google Android Studio Kotlin

    Google Android Studio Kotlin 开发环境配置 Google 近日开发者大会宣布Kotlin成为Android开发的第一级语言,即Android官方开发语言,可见Google对 ...

  5. 在Android中用纯Java代码布局

    感谢大佬:https://www.jianshu.com/p/7aedea560f16 在Android中用纯Java代码布局 本文的完成了参考了一篇国外的教程,在此表示感谢. Android中的界面 ...

  6. Android的Kotlin秘方(I):OnGlobalLayoutListener

    春节后,又重新“开张”.各位高手请继续支持.谢谢! 原文标题:Kotlin recipes for Android (I): OnGlobalLayoutListener 原文链接:http://an ...

  7. android中用get和post方式向服务器提交请求

    通过get和post方式向服务器发送请求首先说一下get和post的区别get请求方式是将提交的参数拼接在url地址后面,例如http://www.baidu.com/index.jsp?num=23 ...

  8. 【Android Developers Training】 2. 运行你的应用

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  9. Android 创建单独的服务运行在后台(无界面)

    转自:https://blog.csdn.net/a704225995/article/details/56481934 今天项目有个需求是,开启一个服务单独运行在后台,而且还不能有界面,在度娘搜索了 ...

随机推荐

  1. MC34063中文资料及应用实例(转)

    源:http://blog.chinaunix.net/uid-26199686-id-3207838.html MC34063A(MC33063)芯片器件简介 该器件本身包含了DC/DC变换器所需要 ...

  2. Keil 二进制数输入宏

    源:http://hi.baidu.com/skystalker/item/e7679cd79c6f751220e250c1?qq-pf-to=pcqq.c2c 在C语言中有十进制,十六进制,八进制; ...

  3. JS传递到后台中文 出现乱码问题

    js 异步传递中文字符,后台接收出现乱码问题 function showFirSelect(a){ var b = encodeURI(a); var secUrl = "<%=bas ...

  4. 【安卓手机通用】android adb shell 命令大全

    浏览:3116 | 更新:2013-10-17 17:05 | 标签:安卓 android 一.[什么是shell] Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口.它是命 ...

  5. (简单) POJ 2502 Subway,Dijkstra。

    Description You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. Instead of ...

  6. AngularJs ng-class 使用

    今天在做项目的时候要对表格内的部分的最大最小值高亮 解决方案 1. 引用 ng-class 2. 引用原型求最大最小值 实例 AngularJs HTML 代码 <table class=&qu ...

  7. laravel无法显示路由界面

    安装完laravel项目后,开启了重写,/app/storage也设置好了权限,但是始终无法显示出页面,并出现: "Whoops, looks like something went wro ...

  8. Photoshop安装

    作者:郑超 参考地址:http://bbs.weiphone.com/read-htm-tid-4594713.html 下载地址:http://www.adobe.com/downloads.htm ...

  9. 关于Java通过JNI调用C 动态链接库(DLL)

    JNI介绍 用JNI实现Java和C语言的数据传递 JNI原理分析和详细步骤截图说明 jni的JNIEnv指针和jobject指针 JNI实现回调| JNI调用JAVA函数|参数和返回值的格式 Jni ...

  10. Xcode遇到couldn’t be opened because you don’t have permission to view it.解决方法

    今天删除app里面第三方类库的之后,xcode在编译的时候出现了这个问题. (无法打开,因为您没有权限查看它) 问题刚出现的时候,可以尝试一下在xcode上方product选项clean一下. cle ...