【发布时间】:2019-10-09 16:51:01
【问题描述】:
我想将所有AsyncTask 重写为Kotlin Coroutines。在Java 代码中调用并等待来自Coroutines 的结果。
例如:我在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
}
}
【问题讨论】:
-
可能是不可能的。您需要阻止或使用回调。 Java 没有协程。
-
等待结果但不阻塞?你不能两者兼得。