在加载 RSS 提要时旋转设备时如何防止错误

How to prevent error when rotating device while RSS feed loads

我开发了一个小应用程序,可以从我自己的 link 中读取和 rss xml 文件。该应用程序运行良好。

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

此外,如果我在加载 RSS 提要后旋转设备,Activity 会再次重新加载提要。任何人都知道崩溃发生的原因或原因?

我想到了以下两种解决方案:

有什么建议吗?

抱歉耽搁了...以下是我得到的轨迹:

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:致命异常:main 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: 查看=com.android.internal.policy.impl.PhoneWindow$DecorView{78a8658 V.E... .. R .....ID 0,0-1696,464} 未附加到 window 经理

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

public void onConfigurationChanged(Configuration newConfig)

for Activity class 并自行处理旋转。

当 phone 旋转时,

Android 杀死你的 activity。每次旋转 phone 时都会调用 OnCreate。出现异常的原因是您的视图依赖于尚未初始化的变量。

因此,您需要将提要数据保存到 OnSaveInstanceState 中的包中,并在 OnRestoreInstanceState 中检索它。在您的 OnCreate 方法中,检查传递给它的包是否为空。如果它为空,那么 activity 已经第一次启动,您需要从 XML 加载提要数据 - 初始化您的变量。如果它不为空,则 phone 已轮换,您可以简单地从包中重新加载提要数据 - 使用从包中恢复的数据初始化您的变量。