10

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

为什么会这样?

4

6 回答 6

14

还要检查您没有在清单中为 Activity 使用 android:noHistory 标志

文档:android:noHistory 当用户离开它并且它不再在屏幕上可见时,是否应该从 Activity 堆栈中删除该 Activity 并完成(它的 finish() 方法被调用)

于 2015-10-20T13:56:23.220 回答
12

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

于 2013-01-14T06:42:07.980 回答
6

如果系统受到限制并确定它需要释放一些资源,则您的活动可能会在按下主页按钮时被破坏。文档说明onDestroy()可以在以下情况下调用:

这可能是因为 Activity 正在完成(有人在其上调用了 finish(),或者因为系统正在临时销毁该 Activity 实例以节省空间。您可以使用 isFinishing() 方法区分这两种情况。

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

于 2013-01-14T06:45:10.367 回答
1

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

    android:configChanges="keyboardHidden|orientation|screenSize"

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

于 2013-01-26T04:03:05.777 回答
1

要检查的另一件事是您的活动是否在finish()何时调用onPause()

于 2018-04-28T07:31:38.807 回答
1

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

于 2018-05-24T18:52:52.043 回答