我是反应性世界的新手,所以如果我说的是错误的,请忍受我(请纠正我!)。
所以我在谷歌和这里搜索类似的东西,但是我想我没有看到我所做的任何事情。我正在使用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
,Fragment
或Service
。如果您从BroadcastReceiver
触发 call ,则应该启动服务来执行此操作。
对于这些组件中的任何一个,您都可以使用onDestroy
方法来处理可观察对象。您唯一需要确保的是将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/