gpt4 book ai didi

使用 Rx-Java 时,旋转后 Android View 为空

转载 作者:行者123 更新时间:2023-11-29 15:36:32 25 4
gpt4 key购买 nike

我正在使用 Kotlin Android Extensions 访问 fragment 中的所有 View ,此 View 按预期工作,即使在屏幕旋转后也可以正常访问。

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

 var interval = Observable.interval(10, TimeUnit.SECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())

interval.retry().subscribe { updateUi(); }

如果我在间隔之间旋转屏幕。下次 updateUi() 方法作为可观察对象的一部分运行时,其中的 View 将为 null,应用程序将崩溃并出现以下异常:

io.reactivex.exceptions.OnErrorNotImplementedException: text_view must not be null

但如果我尝试在 observable 之外运行该方法,一切都会正常工作。

我知道使用 findViewById() 访问 View 将正确检索 View ,但这违背了拥有 kotlin-android-extensions 的目的。

最佳答案

旋转时,屏幕再次设置,因此旧 View 消失了。

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

也许您应该尝试 Android 架构的 ViewModel。我最近一直在使用它并且非常喜欢它。这也将解决您的问题。 https://medium.com/google-developers/viewmodels-a-simple-example-ed5ac416317e

关于使用 Rx-Java 时,旋转后 Android View 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48626207/

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