gpt4 book ai didi

java - 等待 Java 中的 Kotlin 协程结果

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:02 25 4
gpt4 key购买 nike

我想将所有 AsyncTask 重写为 Kotlin Coroutines。在 Java 代码中调用并等待来自 Coroutines 的结果。例如:我在 Kotlin 中有一些长时间使用的方法。

Kotlin :

class Coroutines {
suspend fun readFile(): String {
return GlobalScope.async {
read long file...
}.await()
}
}

现在,我想等待(但不阻止 UI 线程)完整的方法,最好没有回调。

Java:

public class MainActivity extends AppCompatActivity {
...

@Override
protected void onCreate(Bundle savedInstanceState) {
...
Coroutines c = new Coroutines();
c.readFile(); //Wait for result but no block UI thread
}
}

最佳答案

基本上,协程挂起函数只能从另一个挂起函数或从协程构建器(如 async 或 launch)调用。由于java不支持协程,因此无法从java代码启动它。

但是两者的混合是可能的,例如,您可以使用实时数据创建一个 View 模型,该数据从协程启动的 View 模型范围中更新。结果或进度可以在 Activity/fragment 中观察到。

希望这对您有帮助。

关于java - 等待 Java 中的 Kotlin 协程结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58308839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com