我觉得这是姜饼设备上的内存问题,但经过一些活动 - 无论这些活动是否finish()
- 屏幕变白了,活动重新加载,我不知道哪个活动在白屏消失后,堆栈中的内容将被显示或关闭。
同样,当这种情况发生时,应用程序退出后,启动器屏幕必须重新加载。
没有错误消息发布到logcat,没有强制关闭。
我已经监控了logcat中的资源,但我没有指出任何可怕的事情。
我在具有512mb RAM的设备上看到过这种情况,但是由于应用程序没有获得那么多的资源,很难说问题在哪里,如果它是一个内存问题
洞察力
答案 0 :(得分:1)
Gingerbread上此行为的另一个可能原因可能是com.android.server.am.ActivityStack
中定义的常量:
// How long until we reset a task when the user returns to it. Currently
// 30 minutes.
static final long ACTIVITY_INACTIVE_RESET_TIME = 1000*60*30;
...屏幕变白并且活动重新加载
在活动从背景状态转换到前景状态期间,将其不活动持续时间与此常量进行比较。在某些情况下,活动会重新加载(详见下文)。
我永远不确定堆栈中的哪个活动会被揭示或关闭 白屏消失后
为活动设置的标志用于确定将显示堆栈中的哪个活动。确定这一点的方法是ActivityStack#resetTaskIfNeededLocked(ActivityRecord, ActivityRecord)
。你可以在这里查看:Link。
您可能会觉得通过ActivityStack
课程很有意思,看看如何处理活动启动/恢复,以及如何在需要时重新安排活动堆栈。
请注意,上面提到的常量在版本4.0.1_r1及更高版本中保留值zero
,并且不会被使用。
即使您注意到在30分钟内启动和恢复的活动的此行为,标志仍可能负责重新堆栈。
没有错误消息发布到logcat,没有强制关闭。
Logcat中注册了由于内存不足而导致的进程死亡。所以,我对此表示怀疑。