首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Kotlin协程上下文和异常处理

上下文是什么 CoroutineContext是一组用于定义协程行为的元素,包括以下几部分: Job:控制协程的生命周期 CoroutineDispatcher:向合适的线程分发任务 CoroutineName...Dispatchers.IO + CoroutineName("test")) { println("thread: ${Thread.currentThread().name}") } } 协程上下文的继承...剩下的元素会从CoroutineContext的父类继承,该父类可能是另外一个协程或者创建该协程的CoroutineScope 协程的上下文 = 默认值 + 继承的CoroutineContext +...coroutine”作为默认的CoroutineName 继承的CoroutineContext是CoroutineScope或是其父协程的CoroutineContext 传入协程构建器的参数的优先级高于继承的上下文参数...launch(coroutineExceptionHandler) { throw IllegalArgumentException() } } } Android

6410

kotlin--协程上下文、异常处理

从前面我们可以大致了解了协程的玩法,如果一个协程中使用子协程,那么该协程会等待子协程执行结束后才真正退出,而达到这种效果的原因就是协程上下文上下文贯穿了协程的生命周期,这套思想和我们app的上下文很像...:可以说协程的生命周期,就是上下文的生命周期 协程拥有很多新的概念,很多人一开始接触就能难理解(包括我自己),这些概念都是在上下文的基础上引申而来的,所以我一再强调它的重要性,协程的上下文必须理解透,才能玩好协程...,接下来我们来真正了解协程上下文 一、协程上下文 1.CoroutineContext 协程上下文有以下几项构成,它们都是实现了CoroutineContext.Element接口,有些是实现了AbstractCoroutineContextElement...code 0 显然有异常没有被捕获,很明显这个异常是调用job3时输出的,由此又可以推断出,如果在等待任务结束时,任务出现异常并且手动捕获异常后,再启动子协程时,也会抛出异常,并且不可捕获 注意:新版本kotlin...已修复这个bug,不会抛出异常了 3.Android中全局异常的处理

92810

实测Android音频的焦点获取和归还

实测Android音频的焦点获取和归还 前言 最近老板想在产品中的短视频后者直播播放的时候对于手机中的音乐播放器进行暂停播放,并且退出视频播放后手机的音乐播放器还能继续播放之前的音乐。...对于以 Android 5.0(API 级别 21)及更高版本为目标平台的应用,音频应用应使用 AudioAttributes 来描述应用正在播放的音频类型。...面向 Android 8.0(API 级别 26)或更高版本的应用应使用 requestAudioFocus() 方法,该方法会接受 AudioFocusRequest 参数。...AudioFocusRequest 包含有关应用的音频上下文和功能的信息。系统使用这些信息来自动管理音频焦点的得到和失去。...版本 8.0 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {

3.5K30

Android进阶】kotlin 委托

Kotlin 直接支持委托模式,更加优雅,简洁。Kotlin 通过关键字 by 实现委托。 类委托 类的委托即一个类中定义的方法实际是调用另一个类的对象的方法来实现的。...import kotlin.reflect.KProperty // 定义包含属性委托的类 class Example { var p: String by Delegate() } // 委托的类...输出结果为: Example@433c675d, 这里委托了 p 属性 Example@433c675d 的 p 属性赋值为 Runoob Example@433c675d, 这里委托了 p 属性 标准委托 Kotlin...在属性赋值后会执行事件的响应器(handler),它有三个参数:被赋值的属性、旧值和新值: import kotlin.properties.Delegates class User { var...翻译规则在每个委托属性的实现的背后,Kotlin 编译器都会生成辅助属性并委托给它。

51220

Getting started with Kotlin on Android

摘要 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrain设计开发并开源,与Java相比,Kotlin的语法更简洁,更具表达性,而且提供了更多的特性。...两位ThoughtWorks高级咨询师共同为我们分享KotlinAndroid上的运用。 ? Java VS Kotlin 在Java的使用中会遇到很多问题。...在Kotlin里数组默认不是协变的。 ? 对于不可变集合是默认协变,可变集合默认是逆变的。 总结一下 Kotlin提供了高级的语法,例如data、object等。...Kotlin in AndroidAndroid上有一个常见的类叫做viewholder。 ? KotlinAndroid上可以自动把view找出来,不需要手写代码。...Kotlin's Reference 引入Kotlin ? 已知问题 Kotlin与mockito的兼容性。 在Kotlin里的静态代码检查工具还不完善。

71650

Android进阶】Kotlin笔记

Kotlin默认支持委托,不像Java,要么用IDE生成一大堆代码,要么在编译期使用其他动态代理工具生成,Kotlin默认提供了by关键字。...lazy { "HelloWorld" } println(name) } 这一次我们提供了一个lazy方法,Lazy方法会返回我们的委托人LazyDelegate,因为Kotlin...官方就为一些自带的委托封装了方法,可能是Kotlin社区惯用的编码规范,确实,这样好看一些,而且Jetpack Compose中的remember实际上也是这样写的。...Kotlin根本没有静态这一说,Kotlin代替静态的办法一个是object,一个是顶层函数。但这俩都不适用于静态工厂,因为静态工厂经常要访问类中的私有成员。 伴生对象是用来干这些的。...但是,别忘了Kotlin中的命名参数,上面的例子本可以用命名参数更加方便的解决。 class Person constructor( name: String, age: Int?

70120

关于Kotlin扩展函数与lambda的上下文

val textView = TextView(activity).apply { //这里的上下文是谁呢?...} 复制代码 注意,这里虽然调用了apply方法,但是后面的代码块{}实际上是block: () -> Unit这个lambda的简写,也就是说我们是处于一个lambda表达式中,所以它的上下文自然就是这段代码外部的上下文...但是我们知道Kotlin自己带的apply方法是可以在这个lambda中去拿到调用它的对象,然后去做一些配置操作的,也就是说是可以把这个lambda中的上下文变成调用者的。怎么做呢?...既然这个lambda一家是T的一个扩展方法了,那么他内部的上下文自然就是这个T了。所以就可以有了如下的写法。...TextView(activity).apply { text = "HelloDSl" textSize = 16.sp2px() } 复制代码 是不是已经和Kotlin自己的apply

30520
领券