kotlin-coroutines相关内容
有一个协程块可以运行挂起功能. 但是我通过反射通过invoke调用了该函数.这是java样式的调用,显然,简单的调用将不起作用. 有没有办法异步运行反射方法?如何等待这种方法? import kotlin.coroutines.experimental.* class TestClass(val InString: String) { suspend fun printStr
..
在此问题中:科特琳·协程选择Dispatcher 我们可以理解在CPU进程中使用Dispatcher.Default,例如在写入/读取文件或API连接时进行图像/视频转换和Dispatcher.IO. 但是在Dispatcher.kt类文档中,对于IO您会发现: * This dispatcher shares threads with a [Default][Dispatchers.
..
例如,此视图.取消onDetachedFromWindow调用范围时,但启动的作业仍处于活动状态. class TestView : FrameLayout,CoroutineScope { val TAG = "TestView" override val coroutineContext: CoroutineContext get() = Dispatch
..
文档> 状态 使用给定的协程上下文调用指定的暂停块,暂停直到完成,然后返回结果. 但是,实际行为是它也在所有子协程上等待,并且不一定返回块的结果,而是在子协程中传播任何异常. suspend fun main() { try { val result = withContext(coroutineContext) { launch
..
我想测试我的数据库层,我陷入了22类情况. 测试用例由两部分组成: 保存一些实体 加载实体并断言数据库映射按预期工作 总而言之,问题在于: Insert是suspend方法,这意味着它需要在runBlocking{} 中运行 Query返回结果的LiveData,该结果也是异步的.因此,需要对其进行观察.有一个此 SO问题,说明了如何执行此操作. 为了根据上面的链接观
..
我在和协程一起玩耍,发现一些非常奇怪的行为.我想使用suspendCoroutine()在我的项目中转换一些异步请求.这是显示此问题的代码. 在第一种情况下,当在runBlocking协程中调用suspend函数时,来自延续的异常进入catch块,然后runBlocking成功完成.但是在第二种情况下,当创建新的async协程时,异常会通过catch块并使整个程序崩溃. package
..
我对以下问题感到茫然. 我有以下代码: val parentJob: Job = Job() launch(parent = parentJob) { while (true) { if (!parentJob.isCompleted) { // I want to control suspension here
..
我有一个像这样的班 class SomeClass { fun someFun() { // ... Some synchronous code async { suspendfun() } } private suspend fun suspendFun() { depen
..
因此,第一次查看协程,我想并行处理数据加载并等待其完成.我环顾四周,看到RunBlocking和Await等,但不确定如何使用它. 我到目前为止有 val jobs = mutableListOf() jobs += GlobalScope.launch { processPages(urls, collection) } jobs += GlobalScope.launch
..
对于使用异步API的任何人来说,这都是一个痛苦的熟悉的问题:当您的调用遇到故障时,异步库的私有线程会检测到它,创建一个异常对象,并将其传递给您的回调.值得一毛钱的唯一信息是该消息中的消息,可能还有它的类型.堆栈跟踪毫无价值. 与Google Play报告应用程序崩溃的方式杂交:消息被剥离,而您得到的只是堆栈跟踪.现在,您已一无所有.您只知道您的应用程序存在您在自己的测试中未检测到的错误.
..
我正在学习Kotlin协程.我已经读到runBlocking是桥接同步和异步代码的方式.但是,如果runBlocking停止UI线程,性能会提高多少? 例如,我需要在Android中查询数据库: val result: Int get() = runBlocking { queryDatabase().await() } private fun queryDatabase(
..
我正在尝试在0.30.0中使用最新的协程,并且在弄清楚如何使用新范围时遇到了麻烦.在原始的协程中,我可以使用UI或CommonPool设置上下文,并且一切正常. 现在,我正在尝试从房间数据库中读取数据时在ViewModel中使用GlobalScope,然后我想将返回的值分配给LiveData对象. 尝试设置LiveData值时出现以下错误 java.lang.IllegalSta
..
某些JVM框架使用ThreadLocal存储应用程序的调用上下文,例如 SLF4j MDC ,事务管理器,安全管理器等. 但是,Kotlin协程是在不同的线程上调度的,那么如何使它工作呢? (该问题的灵感来自 GitHub问题) 解决方案 协程与ThreadLocal的类似物是要与使用库的ThreadLocal互操作,您需要实现自定义这里是一个例子.让我们假设我们使用依赖于特定
..
Kotlin如何在内部实现协程? 协程被称为线程的“较轻版本",我了解它们在内部使用线程来执行协程. 使用任何构建器功能启动协程时会发生什么? 这是我对运行此代码的理解: GlobalScope.launch {
..
我正在阅读协同基础知识试图理解和学习它. > 其中包含这段代码: fun main() = runBlocking { // this: CoroutineScope launch { delay(200L) println("Task from runBlocking") } coroutineScope { // Creat
..
我正在编写自定义loop dsl,我希望它的用法如下所示 var counter1 = 0 var counter2 = 0 loop { counter1 += 1 println(counter1) stopIf(counter1 == 5) // loop should terminate
..
我看到了诸如“>如何使用翻新库?,它们使用@Streaming和RxJava/回调. 我有Kotlin,协程,翻新版2.6.0和类似 https://stackoverflow.com/a/56473934/2914140的查询: @FormUrlEncoded @Streaming @POST("export-pdf/") suspend fun exportPdf( @Fi
..
我有一个使用协程的Kotlin JVM服务器应用程序,我需要将缓存放在非阻塞网络调用的前面.我想我可以使用Caffeine AsyncCacheLoader 接口我需要实现使用CompletableFuture.同时,我要调用的加载缓存条目的方法是suspend函数. 我可以这样弥合差距: abstract class SuspendingCacheLoader: Asyn
..
在一个Android应用中,我试图使用燃料在一个Kotlin协程.我的第一个尝试是在这样的包装器内使用同步模式: launch(UI) { val token = getToken() println(token) } suspend fun getToken(): String? { var (request, response, result = TOKEN_U
..
任何人都可以在功能CoroutineScope()和coroutineScope()之间明确吗? 当我尝试检入源代码时,我发现它们都是CoroutineScope.kt的功能.另外,coroutineScope()是suspend函数,而另一个是normal函数 下面是我可以找到的文档: /** * Creates a [CoroutineScope] that wraps t
..