kotlin相关内容
在调用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/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。 异步代码内部的未捕获异常存储在 结果被推迟,并且不在其他地方交付,它将获得 静默丢弃,除非已处理
..
我在区分这三个运算符之间的确切区别时遇到问题。 以下内容的文档: FlatMapMerge FlatMapConcat FlatMapLatest 这些文档链接表示两个流被平面映射为单个流对象。我对此没有意见,但我很难理解这三家运营商之间的排放会发生怎样的变化。 推荐答案 我翻阅了源代码,发现了一个我通过谷歌搜索找不到的合理指南。https://kotlinlan
..
我有一个存储库类,其异步方法返回User包装成LiveData: interface Repository { fun getUser(): LiveData } 在ViewModel的Coruotine作用域中,我希望等待getUser()方法的结果并使用User实例。 这就是我要找的: private fun process() = viewModel
..
给定2个或多个相同类型的流,是否有现有的Kotlin协程函数来合并它们,如RX合并运算符? 目前我正在考虑: fun merge(vararg flows: Flow): Flow = channelFlow { val flowJobs = flows.map { flow -> GlobalScope.launch { flow.coll
..
您能给我解释一下这两段代码有什么不同吗?第一次打印421张,第二次打印606张。为什么第一个是并行的,第二个是顺序的? fun main(args: Array) = runBlocking { var time = measureTimeMillis { val one = async { one() } val two = asy
..
嘿,我正在学习Android Kotlin中的stateflow。我正在使用回收视图创建反向对话日历视图。在我的mainactivity中有一个fragment,在那个里面我有reyclerview。我的目标是在我的回收视图中分页,所以我会提前几个月加载,而不是通过这个answer在我的回收视图中添加越来越多的数据。我成功地做到了这一点。但问题是,当我达到阈值时,它会触发新数据。我的整个列表都被引
..
突然发现,在没有suspend修饰符的情况下,递归调用Suspend函数比调用相同的函数需要更多的时间,所以请考虑下面的代码片段(基本斐波那契级数计算): suspend fun asyncFibonacci(n: Int): Long = when { n asyncFibonacci(n + 2) - asyncFibonacci(n + 1) n ==
..
在MuableStateFlow上使用Value End Emit Fun有什么区别? fun main() = runBlocking { val mutable = MutableStateFlow(0) launch { mutable.collect { println(it) } } mu
..
我的viewModel中有两个stateFlow。要以片段形式收集它们,我必须启动协程两次,如下所示: lifecycleScope.launchWhenStarted { stocksVM.quotes.collect { if (it is Resource.Success) { it.data?.let {
..
请在下面找到一个使用协程替换回调的函数: override suspend fun signUp(authentication: Authentication): AuthenticationError { return suspendCancellableCoroutine { auth.createUserWithEmailAndPassword(authenti
..
我正在尝试学习协程,所以我启动了IntelliJ并创建了一个临时文件。但是,当我在协程中输入时,我收到编译器的抱怨,比如runBlocking是一个未解析的引用。因此,这不是一个Android项目或任何类似的事情。只是一个基本的Kotlin项目中的临时文件。 如何引入协程内容以停止收到错误? 推荐答案 runBlocking和其他高级协程实用程序不在kotlin标准库中,而是库k
..
我将空手道与JUNIT-5 Runner和Kotlin一起使用,但空手道似乎找不到我的功能文件: 我得到以下信息 未找到任何功能或方案:[类路径:SNCF/空手道] Org.opentest4j.AssertionFailedError:未找到任何功能或方案:[类路径:SNCF/空手道] 这是我的测试文件: package sncf.karate import com.i
..