前言
在Android开发过程中,我们经常会遇到一种情景,那就是需要在一个线程中去执行耗时操作,如网络请求,文件读写等,然后需要通知主线程去更新相应的 ui。当然,在开发过程中,我们也可以有多种方式去实现这样的场景。
在Java语言中,我们实现这个功能的相对简单的方式是利用AsyncTask,大家若对AsyncTask想有一个进一步了解的话,可参考
AsyncTask使用详解
今天就让我们来学习下,kotlin中如何简洁的实现耗时操作在子线程,然后又能方面通知主线程更新ui的知识吧。
今天涉及知识:
- AsyncTask 劣势
- anko 库依赖
- doAsync 的使用
- doAsyncResult 的使用
先来波效果图
效果图.gif
一. 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"
//其他代码省略
//......
}
需要注意的是,此时库依赖添加时必须用双引号,而不能用单引号












网友评论