美文网首页Android
Java调用Kotlin协程方法,如何创建Scope(Conti

Java调用Kotlin协程方法,如何创建Scope(Conti

作者: JeahWan | 来源:发表于2020-04-17 10:27 被阅读0次

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


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

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



2、在Java侧调用:

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

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

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



yeah~~

相关文章

网友评论

    本文标题:Java调用Kotlin协程方法,如何创建Scope(Conti

    本文链接:https://www.haomeiwen.com/subject/szxevhtx.html