Kotlin协程之一(协程概念)

开篇的话

这一篇更多的偏向于协程的概念和他的定义等,更多的算是一个知识背景的介绍,如果只是想看如何使用,可以跳过这一篇。

1、协程是什么:协程是基于线程的,是轻量级的线程。他更多的是和Kotlin进行配合使用的。

coroutine=cooperation +routine things 大体意思是指日常事务的组合。

2、安卓中为什么引入协程:

        a)首先,协程是用来处理耗时任务的。

        b)其次,协程可以保证主线程安全,可以保证安全的从主线程调用任何suspend函数。(因为耗时任务常常会阻塞主线程)

        c)再有,安卓11google官方,已经不推荐使用AsyncTask异步任务,而是推荐使用协程。

3、协程可以解决多个回调嵌套,而造成回调地狱的问题。

例如变态需求场景:

首先需要请求APP更新接口,如果是最新版本,则请求用户信息接口,如果是新注册用户用户,则请求新人奖励类型接口,如果发放的新人奖励是会员时长,则请求新人奖励的具体展示信息。

这里涉及到需要顺序调用4个接口(不考虑设计是否合理,单纯列举场景)。如果使用AsyncTask。就会出现回调嵌套回调。造成代码的后期维护性降低。

而协程可以通过顺序调用的方式,类似于同步执行的方式。更符合人类的阅读习惯。

举例如下:

使用回调,造成地狱回调的情况
object : AsyncTask<Void,Void,Int>(){
            override fun doInBackground(vararg p0: Void?): Int {
                return API.requestAppVersion("1.0.1")
            }

            override fun onPostExecute(result: Int?) {
                super.onPostExecute(result)
                object : AsyncTask<Void,Void,Int>(){
                    override fun doInBackground(vararg p0: Void?): Int {
                        return API.requestUserInfo("admin")
                    }

                    override fun onPostExecute(result: Int?) {
                        super.onPostExecute(result)
                        object : AsyncTask<Void,Void,Int>(){
                            override fun doInBackground(vararg p0: Void?): Int {
                                return API.requestGiftType("admin")
                            }

                            override fun onPostExecute(result: Int?) {
                                super.onPostExecute(result)
                            }
                        }.execute()
                    }
                }.execute()
            }
        }.execute()
GlobalScope.launch {
            val requestAppVersion = API.requestAppVersion("1.0.1")
            if (requestAppVersion==0) {
                val userInfo = API.requestUserInfo("admin")
                if (userInfo==NewUser){
                    val giftType = API.requestGiftType("")
                }
            }
        }

通过上面的代码,可以看出,协程的方式,减少了需要处理异步回调的情况,更多的类似于同步的变成。不用考虑耗时任务的处理,更加简便,易于理解。

4、协程最重要的就是将异步逻辑同步化,杜绝了嵌套回调。

而协程的最核心的内容就是,函数的挂起和恢复。

下一篇将会说明如何使用Coroutine

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值