如何在java中收集一个coroutine流?

问题描述 投票:0回答:1

我正在开发一个Android库。

当用户收到推送通知时,它可能包含深层链接,我需要返回到应用程序中。

我在kotlin中做了,没有问题。

当需要发送深层链接时,会调用这个函数。

fun getDeepLinkFlow(): Flow<HashMap<String, String>?> = flow {
    emit(deepLinks)
}

而在我的kotlin测试应用中,我也能顺利使用,使用方法是这样的。

GlobalScope.launch(coroutineContext) {
    SDK.getDeepLinkFlow().collect { deepLinks ->
        println(deepLinks)
    }
}

但是现在,有一个RN项目想要使用这个库,为了做到这一点,我们做了一个RN模块,把iOS代码和Android代码连接起来。但它使用的是java。

那么,我怎样才能在Java代码上使用Coroutines的collect呢,或者说我有什么不同的做法?

java android kotlin coroutine kotlin-coroutines
1个回答
0
投票

流程图Flow 在Java中使用起来很不方便,因为它依赖于转化的 suspend 代码的工作。

一个可能的解决方案是暴露出另一种方式来消耗 Flow 到你的java代码中。使用 RxJava集成库 你可以暴露一个兼容的 Flowable 的,java端可以消耗。


0
投票

我决定改变深层链接的使用方式,开始使用ViewModel与liveData代替。

© www.soinside.com 2019 - 2024. All rights reserved.