如何在生命周期独立 类 中处理 Observables?
How to dispose Observables in lifecycle independent classes?
我有一个基于ConnectivityManager.NetworkCallback
的网络更改通知程序class,我想在网络可用时更新一些字段;
override fun onAvailable(network: Network?) {
super.onAvailable(network)
val db = StoreDatabase.getInstance(context)
val stores = db.createStores()
val disposable = stores.insertStore(Stores(storeName = "testOnAvailableNetInsertions", status
= AppConstants.Database.SYNC_FAIL))
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io()).subscribeWith(object : DisposableCompletableObserver() {
override fun onComplete() {
if (!isDisposed)
dispose()
}
override fun onError(e: Throwable) {
if (!isDisposed)
dispose()
}
}).dispose()
在方法结束时调用 dispose 可以吗,还是我必须在其他地方处理该变量,
这就是我的道;
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertStore(stores: Stores): Completable
请注意,您无需在调用 onComplete
或 onError
后显式处理订阅。一旦观察者收到任何终止事件,他们将被取消订阅。所以你可以尝试的一件事是:
super.onAvailable(network)
val db = StoreDatabase.getInstance(context)
val stores = db.createStores()
stores.insertStore(Stores(storeName="testOnAvailableNetInsertions",
status=AppConstants.Database.SYNC_FAIL))
.subscribeOn(Schedulers.io())
.subscribe()
在链的末尾调用 .dispose()
将立即处理订阅,并且在大多数情况下没有多大意义。它可能只适用于您的情况,因为您的订户在技术上并没有做太多事情,但我不确定。此外,.dispose()
不会 return 任何东西。在 Kotlin 中它将 return 一个 Unit
所以 val disposable
将只是一个 Unit
.
我有一个基于ConnectivityManager.NetworkCallback
的网络更改通知程序class,我想在网络可用时更新一些字段;
override fun onAvailable(network: Network?) {
super.onAvailable(network)
val db = StoreDatabase.getInstance(context)
val stores = db.createStores()
val disposable = stores.insertStore(Stores(storeName = "testOnAvailableNetInsertions", status
= AppConstants.Database.SYNC_FAIL))
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.io()).subscribeWith(object : DisposableCompletableObserver() {
override fun onComplete() {
if (!isDisposed)
dispose()
}
override fun onError(e: Throwable) {
if (!isDisposed)
dispose()
}
}).dispose()
在方法结束时调用 dispose 可以吗,还是我必须在其他地方处理该变量, 这就是我的道;
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertStore(stores: Stores): Completable
请注意,您无需在调用 onComplete
或 onError
后显式处理订阅。一旦观察者收到任何终止事件,他们将被取消订阅。所以你可以尝试的一件事是:
super.onAvailable(network)
val db = StoreDatabase.getInstance(context)
val stores = db.createStores()
stores.insertStore(Stores(storeName="testOnAvailableNetInsertions",
status=AppConstants.Database.SYNC_FAIL))
.subscribeOn(Schedulers.io())
.subscribe()
在链的末尾调用 .dispose()
将立即处理订阅,并且在大多数情况下没有多大意义。它可能只适用于您的情况,因为您的订户在技术上并没有做太多事情,但我不确定。此外,.dispose()
不会 return 任何东西。在 Kotlin 中它将 return 一个 Unit
所以 val disposable
将只是一个 Unit
.