作者: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. STM32开发指南-跑马灯实验

    简单对I/O口的控制,主要通过对寄存器的读写控制.主要通过I/O的寄存器来控制:1. 控制I/O的方向2. 控制I/O的输出电平或上下来电阻3. 存储I/O口当前的输入状态(高低电平) 对使用LED灯 ...

  2. IMapControl3 Interface(1) Properties属性

    IMapControl3 Interface Provides access to members that control the MapControl. Note: the IMapControl ...

  3. 使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍

    使用Visual Studio 2008创建你的第一个Windows Mobile程序介绍 Windows MobileMobileWindowsMicrosoftWinForm 介绍 Microso ...

  4. at 定时任务

    每天一个linux命令(49):at命令   在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. ...

  5. 高效PHP编程

    1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍.   当然了,这个测试方法需要在十万级以上次执行,效果才明显.   其实静态方法和非静 ...

  6. (中等) CF 585B Phillip and Trains,BFS。

    The mobile application store has a new game called "Subway Roller". The protagonist of the ...

  7. javascript 函数的基础知识

    1. Why JavaScript functions always return a value? I'm taking a course in JavaScript programming, an ...

  8. Extraordinarily Tired Students UVA - 12108

    不知道叫什么,好像是模拟的方法,看懂了题就好办(英语硬伤←_←) 题意大概是当一个同学想睡觉的时候判断周围睡觉的人数,不睡的人数大于等于睡觉的话就死撑着,否则就睡觉. 一开始没有什么思路,就直接用了个 ...

  9. Ubuntu安装MongoDB和PHP扩展

    MongoDB是一个可伸缩的,高性能的开源NoSQL 文档数据库.主要用C++开发完成.面向文档存储,全索引支持,可复制和高可用性,自动分片等特征.其在非关系型数据库中是功能最丰富,最像关系型数据库 ...

  10. kafka第五篇

    架构设计:http://www.linuxeden.com/html/news/20130309/136716_2.html 代码实现consumer 和producer