2

我有一个应用程序,它使用一个 ActicityGroup 来拥有一堆活动。如果我开始一个新的活动,我会作为我的 ActivityGroup 的子项来执行此操作。假设我在我的起始活动 (1) 中,我开始了一个新的活动 (2),所以这就是所谓的:

(1): onPause()

(2): onCreate(), onStart(), onResume()

直到这里,一切都如影随形。如果我按下我的 BackButton 堆栈如下:

(2): onPause(), onStop(), onDestroy()

(1): onStop(), onDestroy() [原文如此]

(1): onCreate(), onStart(), onResume()

我看不出有什么理由,首先为什么 (1) 应该执行 onStop 和 onDestroy() 以再次重新创建,其次为什么永远不会在 (1) 上调用 onRestart。

有没有人有这种行为的原因?我可以以某种方式“取消”对 onStop() 或 onDestroy() 的调用吗?任何想法都赞赏

4

4 回答 4

5

在启动子活动时尝试使用 FLAG_ACTIVITY_SINGLE_TOP,例如:

    Window window = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));

更多信息在这里:

http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_SINGLE_TOP

于 2011-09-16T12:58:00.243 回答
2

您可以通过一种非常简单的方式在按下后退按钮时避免 Activity onDestroy 方法,

只提

android:persistent="true"

对于您的活动,这应该可以防止您的活动被破坏,要了解更多详细信息,您可以访问以下 SO 帖子

尽可能长时间地防止活动被破坏

于 2016-03-04T07:13:51.833 回答
0

当您按下后退按钮时,它的默认行为是停止或销毁当前活动,您可以覆盖后退按钮。如果您按下主页按钮,那么它将使用 onPause(),这意味着当您再次启动相同的活动时,操作系统将考虑您想要继续当前活动,但如果您按下返回按钮,则意味着您完成当前活动并返回上次活动

于 2011-09-16T12:57:38.263 回答
0

Onstop()onDestroy()直到你没有完成活动才会打电话。Ondestory()要求释放Activity占用的资源。如果活动使用已经结束,那么最好销毁此活动。

其次,它将有利于内存管理方案。如果你不调用destroy,那么它会在你退出应用程序时自动调用

最后 ,如果您不想在按下后退按钮时调用销毁,那么您可以使用覆盖方法onBackpressed()

于 2011-09-16T13:17:20.883 回答