在我的应用程序中,当我按下主页按钮时,活动将转到onDestroy()
. 它应该onPause()
只被称为方法吗?
为什么会这样?
在我的应用程序中,当我按下主页按钮时,活动将转到onDestroy()
. 它应该onPause()
只被称为方法吗?
为什么会这样?
还要检查您没有在清单中为 Activity 使用 android:noHistory 标志
文档:android:noHistory 当用户离开它并且它不再在屏幕上可见时,是否应该从 Activity 堆栈中删除该 Activity 并完成(它的 finish() 方法被调用)
这取决于你的手机有多少内存,如果你的手机没有太多内存,那么它会立即破坏活动以释放资源。在新手机上,这不会发生,因为它们有足够的备用内存。
如果系统受到限制并确定它需要释放一些资源,则您的活动可能会在按下主页按钮时被破坏。文档说明onDestroy()
可以在以下情况下调用:
这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。
另外,请注意,系统可以kill
在您的程序被调用onDestroy()
后不调用onStop()
。因此,任何清理/数据持久性代码都应该在onPause()
或onStop()
中。
嗯,这取决于很多因素。如果您在 Android 3.2+ 设备上遇到此问题,则应将 screenSize 属性添加到 android:configChanges
android:configChanges="keyboardHidden|orientation|screenSize"
此外,还将 android:launchMode="singleTop" 添加到您的启动器活动中。请注意,您需要使用 Android SDK 15 或更高版本作为目标,但是,您的应用也可以在旧设备上运行。希望这可以帮助。
要检查的另一件事是您的活动是否在finish()
何时调用onPause()
当然可能是内存问题,但在此之前检查清单文件,在活动的声明中,如果你声明了“没有历史记录”(你不希望活动保留在活动堆栈中。你也可以使用一些当您创建带有意图的活动时标记。然后,最可能的答案是 Alex Contour 给出的答案。