如何在RSS Feed加载时旋转设备时防止出错

时间:2015-09-11 12:47:21

标签: android rotation rss rss-reader

我开发了一个小应用程序,它从我自己的链接读取和rss xml文件。应用运行正常。

但是,我注意到当我在完全加载Feed之前旋转手机时,应用程序崩溃了。

此外,如果我在加载RSS Feed后旋转设备,则活动会再次重新加载Feed。有人知道崩溃发生的原因或原因吗?

我在考虑以下两个解决方案:

  • 强制活动始终处于纵向布局。

  • 在RSS Feed加载后禁用旋转,然后释放。如果可能的话。

有什么建议吗?

抱歉延迟......以下是我得到的痕迹:

09-15 09:53:31.209 30468-30468 / com.rrrrrrrr.xxxxxxxxxx E / ViewRootImpl:sendUserActionEvent()mView == null 09-15 09:53:31.754 30468-30468 / com.rrrrrrrr.xxxxxxxxxx E / ViewRootImpl:sendUserActionEvent()mView == null 09-15 09:53:31.769 30468-30468 / com.rrrrrrrr.xxxxxxxxxx E / AndroidRuntime:致命异常:主要 09-15 09:53:31.769 30468-30468 / com.rrrrrrrr.xxxxxxxxxx E / AndroidRuntime:流程:com.relentlessdev.maleadvise,PID:30468 09-15 09:53:31.769 30468-30468 / com.rrrrrrrr.xxxxxxxxxx E / AndroidRuntime:java.lang.IllegalArgumentException:View = com.android.internal.policy.impl.PhoneWindow $ DecorView {78a8658 VE .... R ..... ID 0,0-1696,464}未附加到窗口管理器

2 个答案:

答案 0 :(得分:0)

我能想到的最好的(因为你还没有提供任何代码片段)是你缺少与android活动相关的非常重要的一点。当屏幕旋转发生变化时,android中的活动将从头开始再次创建。很可能在再次创建活动时,代码中会出现一些NullPointerException。在活动级别有几种方法可以处理android中的屏幕旋转。根据我的最佳解决方案是覆盖

public void onConfigurationChanged(Configuration newConfig)

用于Activity类并自己处理旋转。

答案 1 :(得分:0)

Android会在手机旋转时终止您的活动。每次手机旋转时都会调用OnCreate。异常的原因是您的视图依赖于尚未初始化的变量。

因此,您需要将Feed数据保存到OnSaveInstanceState中的包中,并在OnRestoreInstanceState中检索它。在OnCreate方法中,检查传递给它的包是否为空。如果它为null,则活动首次启动,您需要从XML加载Feed数据 - 初始化变量。如果它不为空,那么手机已经旋转,您只需从包中重新加载Feed数据 - 从包中恢复的数据初始化变量。