首页 > 解决方案 > 如何在java中收集协程流?

问题描述

我正在开发一个Android库,

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

我在kotlin中没有问题。

这是需要发送深层链接时调用的函数

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

在我的 kotlin 测试应用程序中,我也设法毫无问题地使用,像这样使用。

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

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

那么,如何在 Java 代码上使用 Coroutines 中的收集?或者我可以做些什么不同的事情?

标签: javaandroidkotlincoroutinekotlin-coroutines

解决方案


Coroutines/Flow本质上在 Java 中使用起来很尴尬,因为它依赖于转换后的suspend代码才能工作。

Flow一种可能的解决方案是向您的 java 代码公开另一种使用方式。使用RxJava 集成库,您可以公开Flowablejava 端可以使用的兼容。


推荐阅读