Kotlin笔记(65) — 异步线程的实现:doAsync 和

2021-03-01  本文已影响0人  奔跑的佩恩

前言

Android开发过程中,我们经常会遇到一种情景,那就是需要在一个线程中去执行耗时操作,如网络请求,文件读写等,然后需要通知主线程去更新相应的 ui。当然,在开发过程中,我们也可以有多种方式去实现这样的场景。
Java语言中,我们实现这个功能的相对简单的方式是利用AsyncTask,大家若对AsyncTask想有一个进一步了解的话,可参考
AsyncTask使用详解

今天就让我们来学习下,kotlin中如何简洁的实现耗时操作在子线程,然后又能方面通知主线程更新ui的知识吧。

今天涉及知识:

  1. AsyncTask 劣势
  2. anko 库依赖
  3. doAsync 的使用
  4. doAsyncResult 的使用

先来波效果图


效果图.gif

一. AsyncTask 劣势

AsyncTask详细使用如下:
AsyncTask使用详解
其劣势在于AsyncTask的方法周期太多,导致使用起来代码量太大,十分臃肿。于是kotlinanko库的协助下,产生了更加优化的方案:doAsyncdoAsyncResult

二.anko 库依赖

app_modulebuild.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_modulebuild.gradle中添加依赖,类似如下:

dependencies {
    //anko依赖 
    implementation "org.jetbrains.anko:anko:$anko_version"

    //其他代码省略
    //......
}

需要注意的是,此时库依赖添加时必须用双引号,而不能用单引号

三. doAsync 的使用

上一篇 下一篇

猜你喜欢

热点阅读