草庐IT

coroutine2

全部标签

kotlin - kotlinx.coroutines 中的 CoroutineContext 和 Job 有什么区别?

在kotlinx.coroutines库中,所有协程构建器,如launch、async等都采用CoroutineContext参数,但也有一个额外的parent参数,其类型为Job。CoroutineContext和Job有什么区别? 最佳答案 Job代表一个协程或某种正在执行的聚合任务。一个Job是一个CoroutineContext.Element,这意味着它可以存储在协程上下文中。CoroutineContext是不同协程上下文元素的集合,job就是这样一个元素。实际上,协程上下文更像是一个映射,因为您可以使用协程元素键从中检

android - 如何用 kotlin 1.1.0 kotlinx-coroutines-core lib 的特性替换 Anko 的 doAsync、uiThread?

我有一些类似的代码:doAsync{...uiThread{...}}如何用kotlinx-coroutines-corelib中的新内容替换doAsync和uiThread? 最佳答案 协程库0.26版更新:UI已重命名为Main。0.26的完整工作示例:async(CommonPool){...withContext(Main){...}}您不需要从这里进一步阅读,我将把它留给对这个解决方案的发展感兴趣的人。协程库0.20版更新:run现在已弃用,您应该改用withContext。0.20的完整工作示例:async(Common

android - 将项目更新为稳定的协程 Kotlin 1.3.0 + Coroutines 1.0.0 错误

我在我的项目中指定了以下内容:模块dependencies{implementation'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.0.0'implementation'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.0.0'implementation'org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version'}项目buildscript{ext.kotlin_version='1.3.0'repositories{goog

android - Coroutines Kotlin 中 Job 和 Deferred 的区别

我是协程新手,我了解launch和async但仍然令人困惑的部分是Deferred。什么是延迟?Job和Deferred之间的区别。清晰的解释和示例更有帮助。提前致谢。 最佳答案 所以job是一种代表协程执行的对象,与structuredconcurrency相关。,例如您可以取消作业,该作业的所有子作业也将被取消。来自docs:Jobisacancellablethingwithalife-cyclethatculminatesinitscompletion.Deferred是Java中Future的某种模拟:in封装了一个操作,

android - 模拟返回 Kotlin Coroutines Deferred 类型的方法的返回值

我正在使用Kotlin协程,特别是使用Retrofit的CoroutineCallAdapterFactory。然后我正在尝试对一个类进行单元测试,该类又利用Retrofit接口(interface)(GalwayBusService下面)。interfaceGalwayBusService{@GET("/routes/{route_id}.json")fungetStops(@Path("route_id")routeId:String):Deferred}在我的单元测试中我有valgalwayBusService=mock()然后尝试类似以下的方法来模拟调用该方法时返回的内容。问题

android-studio - 编译错误: "-Xcoroutines has no effect: coroutines are enabled anyway in 1.3 and beyond"

当我尝试编译我用Kotlin编写的Android应用程序时,我收到以下编译错误,并且我的构建失败:w:-Xcoroutineshasnoeffect:coroutinesareenabledanywayin1.3andbeyond我该如何解决这个问题? 最佳答案 事实证明,解决这个问题实际上很容易,我想我会记录下我的解决方案,以供将来无疑会偶然发现同样问题的人使用。只需从您的应用级build.gradle中删除以下block,在AndroidStudio中点击“立即同步”并重新构建:kotlin{experimental{corou

android - Kotlin Coroutines 的现有 3 函数回调

我有一个具体示例的一般性问题:我想在拍照时使用Kotlin协程魔法而不是Android中的回调hell。manager.openCamera(cameraId,object:CameraDevice.StateCallback(){overridefunonOpened(openedCameraDevice:CameraDevice){println("CameraonOpened")//evenmorecallbackswithopenedCameraDevice.createCaptureRequest()....}overridefunonDisconnected(cameraD

kotlin - 关闭 kotlinx.coroutines channel 的作用

使用channel.close()关闭kotlinx.coroutineschannel有什么作用,不手动关闭channel的负面影响是什么?如果我不手动关闭channel会不会有一些不必要的处理?是否会在某处引用channel以防止其成为GCd?还是关闭功能只是作为一种通知channel的潜在用户它不能再使用的方式而存在。(从Kotlin论坛https://discuss.kotlinlang.org/t/closing-coroutine-channels/2549转贴的问题) 最佳答案 从概念上讲,通过在该channel上发送

android - Kotlin Coroutines 在 Android 中的正确方式

我正在尝试使用异步更新适配器内的列表,我可以看到有太多样板。KotlinCoroutines的使用方法正确吗?可以进一步优化吗?funloadListOfMediaInAsync()=async(CommonPool){try{//Longrunningtaskadapter.listOfMediaItems.addAll(resources.getAllTracks())runOnUiThread{adapter.notifyDataSetChanged()progress.dismiss()}}catch(e:Exception){e.printStackTrace()runOnU

go - 哪个协程(goroutines 和 kotlin coroutines)更快?

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭5年前。ImprovethisquestionKotlin协程是有限状态机和一些任务运行器的糖(例如,默认的ForkJoinPool)。https://github.com/Kotlin/kotlin-coroutines/blob/master/kotlin-coroutines-informal.md#implementation-details换句话说,在java/kotlin运行时中还没有运行时协程(但这可以随着http://cr.open