簡體   English   中英

如何收集java中的協程流?

[英]How to collect a coroutine flow in java?

我正在開發一個 Android 庫,

當用戶收到推送通知時,它可能包含深層鏈接,我需要返回到應用程序。

我在 kotlin 中沒有問題。

這是需要發送深層鏈接時調用的 function

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 的收集? 或者我可以做些什么不同的事情?

從 Java 開始使用 Coroutines/ Flow本身就很尷尬,因為它依賴於轉換后的suspend代碼來工作。

一種可能的解決方案是向您的 java 代碼公開另一種使用Flow的方式。 使用RxJava 集成庫,您可以公開 java 端可以使用的兼容Flowable

我決定改變使用深度鏈接的方式,開始使用帶有 liveData 的 ViewModel。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM