使用Rx-Java时,Android视图在旋转后为空

我正在使用Kotlin Android Extensions访问片段中的所有视图,该视图按预期工作,即使在屏幕旋转后也可以正常访问。

当我尝试访问Rx-Java可观察间隔内的视图时,问题就开始了:

var interval = Observable.interval(10, TimeUnit.SECONDS, Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) interval.retry().subscribe { updateUi(); } 

如果我间隔旋转屏幕。 updateUi()方法下次作为observable的一部分运行时,其内部的视图将为空,并且应用程序将崩溃,并出现以下exception:

io.reactivex.exceptions.OnErrorNotImplementedException:text_view不能为null

但是,如果我尝试运行可观察性以外的方法,一切都将正常工作。

我知道,使用findViewById()访问视图将正确地检索视图,但是这会破坏具有kotlin-android-extensions的purpuose。

在旋转时,屏幕正在重新设置,所以旧的视图已经消失。

您必须在onStop()取消订阅订阅(由subscribe()调用返回onStop()

也许你应该尝试Android架构的ViewModel 。 我最近一直在使用它,真的很喜欢它。 这也会照顾你的问题。 https://medium.com/google-developers/viewmodels-a-simple-example-ed5ac416317e