按下主页按钮时,活动正在被破坏。

时间:2013-01-14 06:39:39

标签: android android-activity ondestroy

在我的应用程序中,当我按下主页按钮时,活动将转到onDestroy()。它假设只被称为onPause()方法吗?

为什么会这样?

6 个答案:

答案 0 :(得分:12)

这取决于您的手机有多少内存,如果您的手机没有太多内存,那么它会破坏活动以立即释放资源。在新手机上,这不会发生,因为它们有足够的备用内存。

答案 1 :(得分:9)

还要检查您的清单中是否没有使用活动

中的android:noHistory标志

文档: 机器人:noHistory 当用户离开活动时,是否应该从活动堆栈中移除活动并完成活动(调用其finish()方法)并且它在屏幕上不再可见

答案 2 :(得分:6)

如果系统受限并且已确定需要释放一些资源,则可以在按下主页按钮时销毁活动。 documentation表示{:1}}可以在以下情况下调用:

  

这可能是因为活动正在完成(有人称为finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用isFinishing()方法区分这两种情况

此外,请注意系统可onDestroy()您的程序,而无需在调用kill后调用onDestroy()。因此,任何清理/数据持久性代码都应该在onStop()onPause()中。

答案 3 :(得分:1)

嗯,这取决于很多因素。如果您在Android 3.2+设备上遇到此问题,则应将screenSize属性添加到android:configChanges

    android:configChanges="keyboardHidden|orientation|screenSize"

此外,还要将android:launchMode =“singleTop”添加到您的启动器活动中。请注意,您需要使用Android SDK 15或更高版本作为目标,但您的应用也可以在较旧的设备上使用。希望这会有所帮助。

答案 4 :(得分:1)

要检查的另一件事是,您的活动是否在finish()

时致电onPause()

答案 5 :(得分:1)

当然可能是内存问题,但在此之前检查清单文件,在活动声明中,如果您声明了“无历史记录”(您不希望活动保留在活动堆栈中。还有当您使用intent创建活动时,可能会使用某些标志。 然后,最可能的答案是Alex Contour给出的答案。