java - 如何在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 中的收集?或者我可以做些什么不同的事情?
解决方案
Coroutines/Flow
本质上在 Java 中使用起来很尴尬,因为它依赖于转换后的suspend
代码才能工作。
Flow
一种可能的解决方案是向您的 java 代码公开另一种使用方式。使用RxJava 集成库,您可以公开Flowable
java 端可以使用的兼容。
推荐阅读
- spring-boot - 基本身份验证不适用于 POST 端点
- javascript - 默认隐藏表格行 - 按钮显示?
- java - 我有 5 个按钮我想更改 mediaPlayer 源 fonClick 的按钮怎么做?
- c# - 从下载字符串获取信息后,如何将文本框中的数据拆分为多行?
- postgresql - 如何自动将多个表从一个模式移动到 PostgreSQL 中的另一个模式?
- javascript - 即使包裹在 Number() 中,JavaScript 函数也会返回 NaN?
- delphi - 如何找出 tmemo 组件中的字符数?
- python - 滑累计和python
- python - Python将字符串列表减少为int
- makefile - 是否可以将延迟评估的变量导出到子 Makefile?