Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在活动中使用改型和RxJava/RxAndroid处理旋转?_Android_Rotation_Retrofit_Rx Java_Rx Android - Fatal编程技术网

如何在活动中使用改型和RxJava/RxAndroid处理旋转?

如何在活动中使用改型和RxJava/RxAndroid处理旋转?,android,rotation,retrofit,rx-java,rx-android,Android,Rotation,Retrofit,Rx Java,Rx Android,我读到我们可以使用一些全局缓存来处理旋转 您可以通过使用缓存或replay Observable操作符来防止这种情况,同时确保Observable在活动生命周期中以某种方式生存(例如,通过将其存储在全局缓存、片段中等) 但如何做到这一点呢?有人能给我举个例子怎么做吗? 或者您知道一些更好的方法来处理配置更改 编辑: 目前我已经找到了很多方法,但最终还是使用了RxBus实现。您可以找到使用RxBus的好例子。我制作了一个演示应用程序(),以试验如何处理Android应用程序中的各种情况。简而言之,

我读到我们可以使用一些全局缓存来处理旋转

您可以通过使用缓存或replay Observable操作符来防止这种情况,同时确保Observable在活动生命周期中以某种方式生存(例如,通过将其存储在全局缓存、片段中等)

但如何做到这一点呢?有人能给我举个例子怎么做吗? 或者您知道一些更好的方法来处理配置更改

编辑:


目前我已经找到了很多方法,但最终还是使用了RxBus实现。您可以找到使用RxBus的好例子。

我制作了一个演示应用程序(),以试验如何处理Android应用程序中的各种情况。简而言之,我使用活动中的单例模型从网络中获取响应。这使得缓存响应、访问来自多个UI组件的数据、订阅挂起的请求以及为自动化UI测试提供模拟数据成为可能

我最近使用了Loader和ConnectableObservable相结合的方法来处理RxJava2流中更好的旋转。我甚至创建了一个详细的解释我的方法


基本上,您必须将observable(ConnectableObservable)放入带有转换器的加载程序中,然后在销毁后活动/片段恢复时重新订阅它。

感谢您的演示应用程序!但我认为我们应该使用RxLifecycle库,以便在发出请求时处理旋转。看看RxAndroid的变化和稳定版本,我没有RxLifecycle的第一手经验,但我认为它可以根据生命周期事件为您自动取消订阅。您仍然需要自己订阅挂起的请求/获取缓存数据。如果我错了,请纠正我认为你是对的,但我仍然没有实现RxLifecycle,所以现在不能纠正你。我希望已经使用过RxLifecycle和RxBinding的人能够纠正我们。很抱歉,我对RxLifecycle的理解是错误的,它只能处理自动取消订阅,以防止内存泄漏,而不能处理旋转。这是我的误会。再次感谢您的示例!在方向更改时,您希望保留请求并交付给新活动。在实际的销毁活动中,您希望终止请求并销毁结果。有人有办法吗?