下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 29 | 协程的语法糖
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

快速上手Kotlin开发

共50讲 · 50课时·约450分钟
3811
免费
01 | 讲给你的 Kotlin 快速上...
免费
02 | Kotlin 最基础语法
免费
03 | Kotlin 与 Java 完全兼...
04 | 新手使用 Kotlin 常碰到...
05 | 函数也能嵌套?这个特性要...
06 | 用扩展函数简化代码调用
07 | DSL的基础 : Lambda闭包...
08 | 函数的参数是函数 : 高...
09 | 创建对象的关键 : Kotli...
10 | 伴生对象 : Kotlin 特...
11 | by关键字的使用
12 | Kotlin 独有的特殊类
13 | 解构 : 特殊的数据拆箱...
14 | Kotlin 的循环语法
15 | Kotlin海量的集合操作符
16 | 作用域函数 : 你会爱上...
17 | 运算符与中缀 : 定义你...
18 | 神奇的符号 : Kotlin ...
19 | DSL 是什么,原来早就用...
20 | 构建 DSL 的常用方式
21 | 定义自己的 DSL
22 | 理解 Kotlin 中的常量与...
23 | Kotlin 的空安全是如何实...
24 | Kotlin 内联 : noinlin...
25 | Kotlin 的真泛型与实现方...
26 | 协程 : 提升性能的利器
27 | 在Kotlin 中使用协程
28 | 协程的启动参数
29 | 协程的语法糖
30 | suspend : 知其然知其所...
31 | 协程的内部实现原理
32 | 动手设计Kotlin 协程的y...
33 | 协程通信:Channel的使用
34 | 小结 : 动手设计Channel...
35 | NIO 与 BIO
36 | Kotlinx-io 的对象缓存...
37 | Google 推出 KTX 的目...
38 | KTX 的实现
39 | KTX 小结
40 | 在团队中使用 Kotlin
41 | 用 Kotlin 改写现有工程
42 | 滥用特性的后果:没人懂的...
43 | Kotlin 服务端开发框架
44 | Http Servlet 创建 Kot...
45 | Spring Boot 创建 REST...
46 | Kotlin 开发 Web 前端
47 | Kotlin Native 开发
48 | 创建 Kotlin Native 基...
49 | 如何用 Kotlin 实现 An...
50 | Android MVP 的 Kotlin...
本节摘要

源代码及 PDF 课件地址:

https://github.com/kymjs/KotlinPrimer

精选留言(5)

  • 2019-05-31
    现在协程版本都1.2.1了,有些调用都变化了

    作者回复: 是的,视频录制是在一年多以前做的,那时候还没有协程正式版,没办法,不能更新

    1
  • 2019-06-20
    How to migrate Kotlin from 1.2 to Kotlin 1.3.0 then using async, launch...

    https://stackoverflow.com/questions/53125385/how-to-migrate-kotlin-from-1-2-to-kotlin-1-3-0-then-using-async-ui-and-bg-in-a

    这个link里面有介绍
    展开

    作者回复: 👍🏻

  • 2019-02-20
    await 是会阻塞当前线程,这样写虽然网络请求是异步的,但是 await 必须要等到网络返回数据才会往下执行,还是会阻塞 UI 吧?

    作者回复: await的调用必须在suspend代码块内

  • 2018-12-14
    implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.1'
    fun displayDashboard(mTextView: TextView) = runBlocking {
        launch {
            mTextView.text = withContext(Dispatchers.Default) {
                okHttpClient.newCall(request).execute().body()?.string()
            }
        }
    }
    展开
  • 2018-08-24
    依赖了协程的Android库以后,会报错,然后我从协程的github上找了demo,发现问题跟我的一样,怎么解?

    依赖:
    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:0.25.0"

    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.61"

    报错:
    Android部分:
    1、Program type already present: kotlinx.coroutines.experimental.internal.LockFreeMPMCQueue
    Message{kind=ERROR, text=Program type already present: kotlinx.coroutines.experimental.internal.LockFreeMPMCQueue, sources=[Unknown source file], tool name=Optional.of(D8)}

    2、Program type already present: kotlinx.coroutines.experimental.sync.MutexImpl$lockSuspend$$inlined$suspendAtomicCancellableCoroutine$lambda$1
    Message{kind=ERROR, text=Program type already present: kotlinx.coroutines.experimental.sync.MutexImpl$lockSuspend$$inlined$suspendAtomicCancellableCoroutine$lambda$1, sources=[Unknown source file], tool name=Optional.of(D8)}

    Java部分:
    1、com.android.builder.dexing.DexArchiveBuilderException: Failed to process /Users/xxx/KotlinCoroutineDemo/app/build/intermediates/transforms/desugar/debug/16.jar

    2、com.android.builder.dexing.DexArchiveBuilderException: Error while dexing.

    3、com.android.tools.r8.CompilationFailedException: Compilation failed to complete

    4、com.android.tools.r8.utils.AbortException
    展开

    作者回复: 可以run一下本视频中的示例代码,对照看看是不是配置或者gradle的问题