草庐IT

Coroutines

全部标签

android - 程序类型已经存在 : kotlinx. coroutines.experimental.EventLoopBase

我的kotlinandroid应用程序出现以下错误Androidissues:(3errors)Programtypealreadypresent:kotlinx.coroutines.experimental.EventLoopBaseMessage{kind=ERROR,text=Programtypealreadypresent:kotlinx.coroutines.experimental.EventLoopBase,sources=[Unknownsourcefile],toolname=Optional.of(D8)}Programtypealreadypresent:ko

android - 在 Kotlin Coroutines 生产者内部处理取消

是否可以在生产者构建器内部处理生产者取消?取消订阅回调可能很有用:privatefunchanges(key:String)=produce(UI,CONFLATED){vallistener=OnSharedPreferenceChangeListener{_,changedKey->if(key==changedKey)offer(Unit)}prefs.registerOnSharedPreferenceChangeListener(listener)???.onCancel{prefs.unregisterOnSharedPreferenceChangeListener(lis

android - Kotlin Coroutines - 嵌套协程是在一个协程中处理不同线程的正确方法吗?

我第一次在基本网络调用上尝试使用协程而不是RxJava,看看它是什么样的,并遇到了一些滞后/线程问题在下面的代码中,我正在执行网络调用userRepo.Login(),如果发生异常,我会显示一条错误消息并停止我在开始时启动的进度动画功能。如果我将所有内容都留在CommonPool上(或不添加任何池),它会崩溃,并指出如果发生异常,动画必须在循环线程上完成。在其他情况下,我收到错误消息说这也必须在UI线程上完成,同样的问题,不同的线程要求。不过,我无法在UI线程上启动整个协程,因为登录调用会阻塞,因为它在UI线程上并且会弄乱我的动画(这是有道理的)。我认为解决这个问题的唯一方法是从现有协

android - 如何将 Android 任务转换为 Kotlin Deferred?

Firebase匿名登录返回task(基本上是Googlepromiseimplementation):valtask:Task=FirebaseAuth.getInstance().signInAnonymously()如何创建signInAnonymous包装器,其中:是一个suspend函数,等待task完成暂停有趣的signInAnonymous():Unit它返回一个Deferred对象,异步传递结果有趣的signInAnonymous():延迟 最佳答案 包裹kotlinx.coroutines.tasks现在包括以下实

android - 如何将 Android 任务转换为 Kotlin Deferred?

Firebase匿名登录返回task(基本上是Googlepromiseimplementation):valtask:Task=FirebaseAuth.getInstance().signInAnonymously()如何创建signInAnonymous包装器,其中:是一个suspend函数,等待task完成暂停有趣的signInAnonymous():Unit它返回一个Deferred对象,异步传递结果有趣的signInAnonymous():延迟 最佳答案 包裹kotlinx.coroutines.tasks现在包括以下实

multithreading - 如何限制 kotlin 协程的最大并发性

我有一个序列(来自File.walkTopDown),我需要在每个序列上运行一个长时间运行的操作。我想使用Kotlin最佳实践/协程,但我要么没有并行性,要么并行性太多,并遇到“打开文件太多”的IO错误。File("/Users/me/Pictures/").walkTopDown().onFail{file,ex->println("ERROR:$filecaused$ex")}.filter{...onlybigimages...}.map{file->async{//I*think*Iwantasyncandnot"launch"...ImageProcessor.fromFil

multithreading - 如何限制 kotlin 协程的最大并发性

我有一个序列(来自File.walkTopDown),我需要在每个序列上运行一个长时间运行的操作。我想使用Kotlin最佳实践/协程,但我要么没有并行性,要么并行性太多,并遇到“打开文件太多”的IO错误。File("/Users/me/Pictures/").walkTopDown().onFail{file,ex->println("ERROR:$filecaused$ex")}.filter{...onlybigimages...}.map{file->async{//I*think*Iwantasyncandnot"launch"...ImageProcessor.fromFil

kotlin - 在 IntelliJ IDEA 项目中使用 kotlinx.coroutines

我正在尝试学习协程,因此我启动了IntelliJ并创建了一个暂存文件。但是当我输入协程时,我会收到编译器投诉,例如runBlockingisanunresolvedreference。所以这不是一个android项目或任何类似的东西。只是一个基本Kotlin项目中的临时文件。如何引入协程的东西,以免出错? 最佳答案 runBlocking和其他高级协程实用程序不在Kotlin标准库中,而是库的一部分kotlinx.coroutines.要在您的项目中使用此库,您必须下载其二进制文件并将对它们的依赖项添加到项目中。如果您使用Gradl

kotlin - 在 IntelliJ IDEA 项目中使用 kotlinx.coroutines

我正在尝试学习协程,因此我启动了IntelliJ并创建了一个暂存文件。但是当我输入协程时,我会收到编译器投诉,例如runBlockingisanunresolvedreference。所以这不是一个android项目或任何类似的东西。只是一个基本Kotlin项目中的临时文件。如何引入协程的东西,以免出错? 最佳答案 runBlocking和其他高级协程实用程序不在Kotlin标准库中,而是库的一部分kotlinx.coroutines.要在您的项目中使用此库,您必须下载其二进制文件并将对它们的依赖项添加到项目中。如果您使用Gradl

kotlin - CoroutineScope 背后的概念是什么?

看完CoroutineScope的介绍和javadoc我仍然有点困惑CoroutineScope背后的想法是什么。文档的第一句话“定义新协程的范围”。我不清楚:为什么我的协程需要范围?另外,为什么不推荐使用独立的协程构建器?为什么这样做更好:funCoroutineScope.produceSquares():ReceiveChannel=produce{for(xin1..5)send(x*x)}而不是funproduceSquares():ReceiveChannel=produce{//nolongeranextensionfunctionfor(xin1..5)send(x*x