Kotlin笔记(65) — 异步线程的实现:doAsync 和
2021-03-01 本文已影响0人
奔跑的佩恩
前言
在Android
开发过程中,我们经常会遇到一种情景,那就是需要在一个线程中去执行耗时操作,如网络请求,文件读写等,然后需要通知主线程去更新相应的 ui。当然,在开发过程中,我们也可以有多种方式去实现这样的场景。
在Java
语言中,我们实现这个功能的相对简单的方式是利用AsyncTask
,大家若对AsyncTask
想有一个进一步了解的话,可参考
AsyncTask使用详解
今天就让我们来学习下,kotlin
中如何简洁的实现耗时操作在子线程,然后又能方面通知主线程更新ui的知识吧。
今天涉及知识:
- AsyncTask 劣势
- anko 库依赖
- doAsync 的使用
- doAsyncResult 的使用
先来波效果图

一. AsyncTask 劣势
AsyncTask
详细使用如下:
AsyncTask使用详解
其劣势在于AsyncTask
的方法周期太多,导致使用起来代码量太大,十分臃肿。于是kotlin
在anko
库的协助下,产生了更加优化的方案:doAsync
和doAsyncResult
二.anko 库依赖
在app_module
的build.gradle
中添加如下依赖:
dependencies {
//anko库关于界面跳转简化的依赖
implementation 'org.jetbrains.anko:anko-commons:0.10.8'
//其他代码省略
//......
}
为了方便依赖的统一管理,我们也可以在project
对应的build.gradle
中声明版本常量,类似如下:
buildscript {
//声明anko库版本常量
ext.anko_version='0.10.8'
//其他代码省略
//......
}
anko
库的最新版本可查看anko官网
接着在app_module
的build.gradle
中添加依赖,类似如下:
dependencies {
//anko依赖
implementation "org.jetbrains.anko:anko:$anko_version"
//其他代码省略
//......
}
需要注意的是,此时库依赖添加时必须用双引号,而不能用单引号