gpt4 book ai didi

kotlin - 在 RxAndroid 中处理 Maybe

转载 作者:行者123 更新时间:2023-12-02 12:53:03 25 4
gpt4 key购买 nike

我是响应式(Reactive)世界的新手,所以如果我说的是错误的,请多多包涵(请纠正我!)。

所以我在谷歌和这里搜索类似的东西,但我想我还没有看到任何关于我所做的事情的途径。我正在使用 Rx2Firebase 库使用 RxFirebaseDatabase.observeSingleValueEvent 从我的数据库中获取一些数据方法,我无法理解如何处理我制作的 Observable。所以这个方法返回一个 Maybe ,我想在执行我的代码后处理掉这个 Maybe ,但我不确定如何(请阅读下文了解原因)。

我当前的代码如下所示:

private fun getUserStatus(callback: () -> Unit) {

RxFirebaseDatabase
.observeSingleValueEvent(myQuery,(entry::class.java))
.subscribe ({ item
myEntry = item
callback()
},{ e
Log.e("Error", e.message)
})
}

根据我的阅读,可观察对象被分配给 Disposable变量,然后我认为该变量将被处置?类似于 var disposable: Disposable = <Insert my code above for calling Firebase>你会在 onDestroy里面这样做(从我读过的) .我的问题是,如果我的代码没有在 Activity 或 Fragment 中执行,我该怎么做?我不能只添加 dispose()在我的代码末尾 .subscribe 之后因为那只会在通话结束之前结束通话。

最佳答案

您不需要处理 Maybe在你的代码被执行之后。每当您需要取消基础操作时,您应该处置任何可观察的。由于您使用的是 Android,因此该操作是从某些生命周期感知组件中触发的。这可能是 Activity , FragmentService .如果您从 BroadcastReceiver 触发调用您应该启动一项服务来执行此操作。

对于这些组件中的任何一个,您都有一个方法 onDestroy你可以在哪里处理 observable。您唯一需要确保的是传播 Disposable到这个级别:

private fun getUserStatus(callback: () -> Unit): Disposable =
RxFirebaseDatabase
.observeSingleValueEvent(myQuery,(entry::class.java))
.subscribe ({ item ->
myEntry = item
callback()
},{ e ->
Log.e("Error", e.message)
})

关于kotlin - 在 RxAndroid 中处理 Maybe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56354527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com