kotlin-coroutines相关内容

如何通过反射运行暂停方法?

有一个协程块可以运行挂起功能. 但是我通过反射通过invoke调用了该函数.这是java样式的调用,显然,简单的调用将不起作用. 有没有办法异步运行反射方法?如何等待这种方法? import kotlin.coroutines.experimental.* class TestClass(val InString: String) { suspend fun printStr ..
发布时间:2020-04-26 12:31:35 Java开发

使用分派器IO和默认值之间的差异

在此问题中:科特琳·协程选择Dispatcher 我们可以理解在CPU进程中使用Dispatcher.Default,例如在写入/读取文件或API连接时进行图像/视频转换和Dispatcher.IO. 但是在Dispatcher.kt类文档中,对于IO您会发现: * This dispatcher shares threads with a [Default][Dispatchers. ..
发布时间:2020-04-26 12:30:19 其他开发

为什么withContext等待子协程的完成

文档> 状态 使用给定的协程上下文调用指定的暂停块,暂停直到完成,然后返回结果. 但是,实际行为是它也在所有子协程上等待,并且不一定返回块的结果,而是在子协程中传播任何异常. suspend fun main() { try { val result = withContext(coroutineContext) { launch ..
发布时间:2020-04-26 12:28:38 其他开发

使用LiveData,协程和事务测试Android Room

我想测试我的数据库层,我陷入了22类情况. 测试用例由两部分组成: 保存一些实体 加载实体并断言数据库映射按预期工作 总而言之,问题在于: Insert是suspend方法,这意味着它需要在runBlocking{} 中运行 Query返回结果的LiveData,该结果也是异步的.因此,需要对其进行观察.有一个此 SO问题,说明了如何执行此操作. 为了根据上面的链接观 ..
发布时间:2020-04-26 12:28:07 移动开发

Kotlin协程无法处理异常

我在和协程一起玩耍,发现一些非常奇怪的行为.我想使用suspendCoroutine()在我的项目中转换一些异步请求.这是显示此问题的代码. 在第一种情况下,当在runBlocking协程中调用suspend函数时,来自延续的异常进入catch块,然后runBlocking成功完成.但是在第二种情况下,当创建新的async协程时,异常会通过catch块并使整个程序崩溃. package ..
发布时间:2020-04-26 12:25:49 其他开发

Kotlin协程:等待多个线程完成

因此,第一次查看协程,我想并行处理数据加载并等待其完成.我环顾四周,看到RunBlocking和Await等,但不确定如何使用它. 我到目前为止有 val jobs = mutableListOf() jobs += GlobalScope.launch { processPages(urls, collection) } jobs += GlobalScope.launch ..
发布时间:2020-04-26 12:18:13 其他开发

如何恢复协程的真实通话记录?

对于使用异步API的任何人来说,这都是一个痛苦的熟悉的问题:当您的调用遇到故障时,异步库的私有线程会检测到它,创建一个异常对象,并将其传递给您的回调.值得一毛钱的唯一信息是该消息中的消息,可能还有它的类型.堆栈跟踪毫无价值. 与Google Play报告应用程序崩溃的方式杂交:消息被剥离,而您得到的只是堆栈跟踪.现在,您已一无所有.您只知道您的应用程序存在您在自己的测试中未检测到的错误. ..
发布时间:2020-04-26 12:14:41 移动开发

Kotlin协程`runBlocking`

我正在学习Kotlin协程.我已经读到runBlocking是桥接同步和异步代码的方式.但是,如果runBlocking停止UI线程,性能会提高多少? 例如,我需要在Android中查询数据库: val result: Int get() = runBlocking { queryDatabase().await() } private fun queryDatabase( ..
发布时间:2020-04-26 12:14:30 移动开发

如何在主线程上使用协程GlobalScope?

我正在尝试在0.30.0中使用最新的协程,并且在弄清楚如何使用新范围时遇到了麻烦.在原始的协程中,我可以使用UI或CommonPool设置上下文,并且一切正常. 现在,我正在尝试从房间数据库中读取数据时在ViewModel中使用GlobalScope,然后我想将返回的值分配给LiveData对象. 尝试设置LiveData值时出现以下错误 java.lang.IllegalSta ..
发布时间:2020-04-26 12:13:16 移动开发

如何在Kotlin协程中使用依赖ThreadLocal的代码

某些JVM框架使用ThreadLocal存储应用程序的调用上下文,例如 SLF4j MDC ,事务管理器,安全管理器等. 但是,Kotlin协程是在不同的线程上调度的,那么如何使它工作呢? (该问题的灵感来自 GitHub问题) 解决方案 协程与ThreadLocal的类似物是要与使用库的ThreadLocal互操作,您需要实现自定义这里是一个例子.让我们假设我们使用依赖于特定 ..
发布时间:2020-04-26 12:13:01 其他开发

Kotlin协程如何在内部工作?

Kotlin如何在内部实现协程? 协程被称为线程的“较轻版本",我了解它们在内部使用线程来执行协程. 使用任何构建器功能启动协程时会发生什么? 这是我对运行此代码的理解: GlobalScope.launch { ..
发布时间:2020-04-26 12:11:58 其他开发

如何在Kotlin协程中使用异步缓存?

我有一个使用协程的Kotlin JVM服务器应用程序,我需要将缓存放在非阻塞网络调用的前面.我想我可以使用Caffeine AsyncCacheLoader 接口我需要实现使用CompletableFuture.同时,我要调用的加载缓存条目的方法是suspend函数. 我可以这样弥合差距: abstract class SuspendingCacheLoader: Asyn ..
发布时间:2020-04-26 12:05:07 其他开发