【发布时间】:2015-12-04 18:58:50
【问题描述】:
我的应用在以下情况下崩溃:
- 在完全呈现之前最小化(即,启动用户操作以启动片段,同时单击 Home 键)。
- 然后旋转设备
- 然后最大化应用程序。
但是,如果我在最小化之前等待它完成渲染很长时间,或者在最小化之后不旋转设备,它就可以正常工作。
当我在最小化应用程序后旋转应用程序时,我试图弄清楚系统做了什么。没有日志输出。
我还有一个ViewPager 在活动中。我不确定ViewPager 是否在崩溃中起作用。
崩溃报告如下所示:
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=4
at android.app.FragmentManagerImpl.restoreAllState(FragmentManager.java:1750)
at android.app.Activity.onCreate(Activity.java:943)
at android.support.v4.app.FragmentActivity.onCreate(FragmentActivity.java:257)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:58)
at com.blackberry.emailviews.activity.SwipeableEmailActivity.onCreate(MyActivity.java:124)
at android.app.Activity.performCreate(Activity.java:6034)
【问题讨论】:
-
这会准确地告诉您问题出在什么地方。什么:java.lang.ArrayIndexOutOfBoundsException 更具体地说,您试图引用索引 4 处的数组元素,而所述数组只有 2 个元素。其中:MyActivity 第 124 行。检查该行的内容。
-
该代码在 FragmentManager 类中,它是 Android 代码。
-
Activity 不是在尝试更改其内容而不处于恢复状态吗?当屏幕旋转时,Activity 被销毁并重新创建。如果您保留旧 Activity 的引用并尝试更改其内容,它将崩溃。当您在加载数据时按 Home 并且 Activity 的状态更改为已暂停并且您尝试更改它,它也会崩溃。当您等待足够长的时间让 Activity 和 Fragment 完全加载时,就没有问题了。当你按 Home 或旋转时,可能会出现上述任一情况
-
“android.app.Activity.performCreate...”之前的堆栈跟踪中没有更多的日志输出吗?
-
在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java :2387)
标签: android android-fragments crash fragmentmanager