姜饼随机重启活动

时间:2013-11-08 19:08:38

标签: android android-activity restart ram android-2.3-gingerbread

我觉得这是姜饼设备上的内存问题,但经过一些活动 - 无论这些活动是否finish() - 屏幕变白了,活动重新加载,我不知道哪个活动在白屏消失后,堆栈中的内容将被显示或关闭。

同样,当这种情况发生时,应用程序退出后,启动器屏幕必须重新加载。

没有错误消息发布到logcat,没有强制关闭。

我已经监控了logcat中的资源,但我没有指出任何可怕的事情。

我在具有512mb RAM的设备上看到过这种情况,但是由于应用程序没有获得那么多的资源,很难说问题在哪里,如果它是一个内存问题

洞察力

1 个答案:

答案 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中注册了由于内存不足而导致的进程死亡。所以,我对此表示怀疑。