kotlin-coroutines相关内容
如果我们有两个这样定义的流: val someflow = flow { emit("something") } 和另一个定义如下的流: val stateFlow = MutableStateFlow("some value") 是否可以将这两个流合并为仅发出someflow或stateFlow发出的最后一个值的单个流? 的想法是stateFlow可能在将来的某
..
谁能提供在使用协程进行测试时使用新TestScope和TestScope.launch的高级示例吗? 似乎在新的kotlinx.coroutines.test版本中,他们在库中添加了一些名为TestScope的内容。此外,他们已经弃用了旧的TestCoroutineDispatcher,并被告知使用TestScope.runTests,然而,他们并没有添加太多关于如何使用它的文档。我能找到的所有
..
我正在从应用程序发送邮件。由于邮件发送需要花费时间并阻塞主线程,因此我创建了一个新线程,并将邮件发送任务移交给新线程。对于发送邮件的大量并发请求,我必须创建大量线程。但创建线程似乎很慢。 我的问题是,如果我使用Kotlin的协程,它的性能是否比线程更好? 某些解释或提示非常可取。 推荐答案 我的问题是,如果我使用Kotlin的协程,它的性能是否比线程更好? 协程不是线程的
..
我决定一头扎进Kotlin协程。我有一些关于能见度的问题。我理解,在没有ContinuationInterceptor的情况下,相同协程的不同部分可能由不同的线程执行。 如何保证挂起后的新线程具有正确的协程内部状态可见性? 例如: suspend fun doPost(customRatings : Map) : Int {...} f
..
我知道“调试”选项卡下有一个“线程”窗口,但有没有办法以图形方式查看未完成的作业? 推荐答案 Kotlin1.4添加了一个带有协程标签的调试器。 https://blog.jetbrains.com/kotlin/2020/07/kotlin-1-4-rc-debugging-coroutines/
..
尝试使用房间API,但必须处理异步任务,您知道为什么。 我选择了Kotlin协程和androidx。生命周期。尝试编写一些代码,但在IDE中显示2个错误 无法访问‘kotlinx.coroutines.CoroutineScope’,它是‘androidx.lifecycle.LifecycleCoroutineScope’的超类型。检查模块类路径中是否存在丢失或冲突的依赖项 无法访问类‘kot
..
我正在为JVM设置一个基于Kotlin协程的网络框架。客户端和服务器类实现CoroutineScope,而coroutinecontext的重写是Dispatcher s.IO,因为我非常确定这是用于这种情况的正确调度程序。但是,我希望在主线程上处理读数据包,或者至少提供该选项。在没有阅读文档的情况下,我使用了Dispatcher s.Main,我现在意识到它是用于Android UI线程的。有没
..
我正在启动一个协程,我希望它在继续执行主线程之前完成。 我的简化代码如下所示: fun hello() { for (i in 0..100) { println("hello") } } fun main(args: Array) { val job = GlobalScope.launch { hello() } //lau
..
我开始学习Kotlin Flow和Coroutine,但我不知道如何使下面的代码工作。我做错了什么? interface MessagesListener { fun onNewMessageReceived(message: String) } fun messages(): Flow = flow { val messagesListener = ob
..
在调用continuation.resume()之前,我需要在suspendCoroutine块内调用挂起函数。 执行此操作的适当方式是什么? private suspend fun someFunction() = suspendCoroutine { cont -> //... val myResult = mySuspendingFunction() //
..
尝试构建在活动中使用Kotlin协程的简单示例: lifecycleScope.launch { val result = httpGet("http://hmkcode-api.appspot.com/rest/api/hello/Android") textView.setText(result) } 无法消除错误“未
..
在尝试测试挂起的Spring Kotlin@控制器函数时,我无法理解一个奇怪的行为: @Controller class PersonRSocketController(val personRepository: PersonRepository) { private val sharedFlow = flow { for (i in 1..1000)
..
Kotlin coroutines和‘挂起函数’使程序员可以轻松地等待I/O结果,而无需停止线程(在I/O完成之前,该线程将被分配其他工作要做)。 jOOQ是Java首创的产品,用于以类型安全的方式编写和执行SQL,但本身并未显式使用Kotlin协程。 能否从Kotlin协同例程作用域调用jOOQ,以获得良好的编写和线程高效甚至IO期间的好处? suspend fun myQue
..
我正在尝试在Kotlin Multiplatform项目中使用coroutines。我在这两方面都没有经验。 我正在尝试调用此函数 fun startFlow { coroutineScope.launch { withContext(defaultDispatcher) { myFlow.collect { next -> onNext
..
我正在考虑Kotlin/Android中的协程概念。因此,由于我不想使用定时器任务,处理程序的POST延迟,我想使用协程来执行一个特定延迟后的异步协程。我有以下半码: launch(UI) { val result = async(CommonPool) { delay(30000) executeMethodAfterDelay() }
..
我很习惯使用RX来处理并发,但在我目前的工作中,我们混合了AsyncTask、Executors+Handler、Thads和一些LiveData。现在我们正在考虑转向使用Kotlin Coroutine(实际上已经开始在代码库中的某些地方使用它)。 因此,我需要开始熟悉Coroutine,最好是利用我现有的并发工具知识来加快进程。 我尝试使用Google codelab来帮助他们,虽
..
我有以下代码: val channel = BroadcastChannel(10) fun setup() { scope.launch { channel.asFlow(). .flatMapLatest { fetchSomeData() } .catch { emit(DefaultData())
..
Kotlin协程是否提供任何“发生在之前”的保证? 例如,在这种情况下,在对mutableVar的写入和对其他线程的后续读取(可能)之间是否有“在此之前发生”的保证: suspend fun doSomething() { var mutableVar = 0 withContext(Dispatchers.IO) { mutableVar = 1
..
当尝试从流中收集时,类型突然不匹配,它正在工作,然后突然启动。 在我的视图模型中: class MyViewModel: ViewModel() { lateinit var river: Flow fun doStuff() { river = flow { emit(1) }.flowOn(Dis
..
我看到多个来源声称发生在Async{}块内的异常不会被传递到任何地方,而只存储在Deferred实例中。主张的是,例外仍然是隐藏的,并且只影响人们将调用await()的时刻的外部事物。这通常被描述为launch{}和async{}之间的主要区别之一。Here is an example。 异步代码内部的未捕获异常存储在 结果被推迟,并且不在其他地方交付,它将获得 静默丢弃,除非已处理
..