我正在开发一个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呢,或者说我有什么不同的做法?
流程图Flow
在Java中使用起来很不方便,因为它依赖于转化的 suspend
代码的工作。
一个可能的解决方案是暴露出另一种方式来消耗 Flow
到你的java代码中。使用 RxJava集成库 你可以暴露一个兼容的 Flowable
的,java端可以消耗。
我决定改变深层链接的使用方式,开始使用ViewModel与liveData代替。