我正在用Kotlin Android扩展访问所有视图,这些视图按预期工作,即使在屏幕旋转之后也可以正常访问。
当我试图访问Rx-Java可观测间隔内的视图时,问题就开始了,如下所示:
var interval = Observable.interval(10, TimeUnit.SECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
interval.retry().subscribe { updateUi(); }如果我在间隔之间旋转屏幕。下次updateUi()方法作为可观测值的一部分运行时,它中的视图将为null,应用程序将崩溃,但有以下例外:
io.reactivex.exceptions.OnErrorNotImplementedException: text_view不能为空
但是,如果我试图在可观测范围之外运行该方法,一切都将正常工作。
我知道用findViewById()访问视图将正确地检索视图,但这就克服了拥有kotlin-android扩展的缺点。
发布于 2018-02-05 15:48:52
在旋转时,屏幕再次被设置,所以旧视图消失了。
您必须在subscribe()调用中取消订阅(由onStop()调用返回)。
也许你应该尝试一下安卓架构的ViewModel。我最近一直在用它,我真的很喜欢它。这也能解决你的问题。https://medium.com/google-developers/viewmodels-a-simple-example-ed5ac416317e
https://stackoverflow.com/questions/48626207
复制相似问题