在我的应用程序中,当我按下主页按钮时,活动将转到onDestroy()
。它假设只被称为onPause()
方法吗?
为什么会这样?
答案 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给出的答案。