Java调用Kotlin协程方法,如何创建Scope(Continuation回调参数)?

我们在使用Java调用Kotlin协程方法时,方法参数在Kotlin端看到只有一个,但是通过Java调用时,要求传入一个Continuation回调类,而这个类Java中并不存在,所以我们可以在Kotlin侧新建一个抽象类继承自Continuation,即可由Java端调用。


1、在Kotlin侧新建一个Continuation类:

abstract class Continuation : kotlin.coroutines.Continuation {
    abstract fun resume(value: T)
    abstract fun resumeWithException(exception: Throwable)
    override fun resumeWith(result: Result) = result.fold(::resume, ::resumeWithException)
}  



2、在Java侧调用:

coroutineFun(firstParam , new Continuation() {
    @Override
    public CoroutineContext getContext() {
        return EmptyCoroutineContext.INSTANCE;
    }

    @Override
    public void resume(String value) {
        //拿数据
    }

    @Override
    public void resumeWithException(@NotNull Throwable throwable) {
        //处理异常
    }
});



yeah~~

你可能感兴趣的:(Java调用Kotlin协程方法,如何创建Scope(Continuation回调参数)?)