Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动生命周期。。。如何避免onDestroy()?_Android_Android Activity_Lifecycle_Activitygroup - Fatal编程技术网

Android活动生命周期。。。如何避免onDestroy()?

Android活动生命周期。。。如何避免onDestroy()?,android,android-activity,lifecycle,activitygroup,Android,Android Activity,Lifecycle,Activitygroup,我有一个应用程序,它使用ActivityGroup来拥有一堆活动。如果我开始一项新活动,我会作为我的ActivityGroup的子成员来做。假设我正在开始活动(1),并且我开始了一个新的活动(2),那么这里就是所谓的: (1) :onPause() (2) :onCreate()、onStart()、onResume() 在这里之前,一切都是如此。如果我按BackButton,堆栈如下所示: (2) :onPause()、onStop()、onDestroy() (1) :onStop(),on

我有一个应用程序,它使用ActivityGroup来拥有一堆活动。如果我开始一项新活动,我会作为我的ActivityGroup的子成员来做。假设我正在开始活动(1),并且我开始了一个新的活动(2),那么这里就是所谓的:

(1) :onPause()

(2) :onCreate()、onStart()、onResume()

在这里之前,一切都是如此。如果我按BackButton,堆栈如下所示:

(2) :onPause()、onStop()、onDestroy()

(1) :onStop(),onDestroy()[sic]

(1) :onCreate()、onStart()、onResume()

我看不出有什么理由,首先是为什么(1)应该在顶部执行,然后是onDestroy(),以便再次重新创建,其次是为什么onRestart从未在(1)上被调用

有人知道这种行为的原因吗?我能否以某种方式“取消”对onStop()或onDestroy()的调用?
任何特别的想法

当您按下后退按钮时,它的默认行为是停止或销毁当前活动,您可以覆盖后退按钮。如果按home按钮,则它将使用onPause()命令这意味着当你再次启动相同的活动时,操作系统会考虑你要继续当前的活动,但是如果你按下回击按钮,它意味着你完成当前的活动并返回到最后一个活动

当你按下回退按钮时,默认行为是停止或破坏当前的活动,你可以重写后退按钮。如果你按Home按钮,它将使用OnPoAuess(),这意味着当你再次启动同样的活动时,OS会考虑你要继续当前的活动,但是如果你按下回击按钮,它意味着你完成当前的活动并返回到最后一个活动

< P>在启动子活动时尝试使用FravaActhVyySyLoLyTopToad,比如:

    Window window = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));
更多信息请点击此处:


尝试在启动子活动时使用FLAG\u ACTIVITY\u SINGLE\u TOP,如:

    Window window = getLocalActivityManager().startActivity(id,
            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP));
更多信息请点击此处:

Onstop()
onDestroy()
在您未完成活动之前不会调用<代码>Ondestory()调用以释放活动占用的资源。如果活动使用已结束,则最好销毁此活动

其次,它将有利于内存管理方案。若你们并没有调用destroy,那个么当你们退出应用程序时,它会自动调用

最后 如果按下“上一步”按钮时不想调用destroy,则可以使用覆盖方法
onBackpressed()

Onstop()
onDestroy()
在未完成活动之前不会调用<代码>Ondestory()调用以释放活动占用的资源。如果活动使用已结束,则最好销毁此活动

其次,它将有利于内存管理方案。若你们并没有调用destroy,那个么当你们退出应用程序时,它会自动调用

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

以非常简单的方式按下后退按钮时,可以避免使用Activity onDestroy方法

仅提及

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


以一种非常简单的方式按下“后退”按钮时,您可以避免在存储方法中执行“活动”

仅提及

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


我想你误解了我的意思:很明显,第二次活动会破坏一次压缩,但为什么第一次活动也是这样?我认为如果我们以新活动开始,它会破坏它,但如果我们以结果为目的开始活动,那么我不认为你误解了我:很明显,第二次活动会破坏一次压缩,但为什么这也是第一个活动呢?我认为如果我们以新活动的形式开始,它会破坏它,但如果我们以结果的形式开始活动,那么就不会。这里的问题是:它的工作方式是:创建第一个活动->然后再开始第二个活动,如上所述,返回时它只调用第一个活动的onResume。但是如果我想重新启动SECOND,没有调用任何东西这里的问题是:它的工作方式是:创建FIRST\u ACTIVITY->然后启动SECOND,如上所述,onBack只调用第一个的onResume。但是如果我想第二次重新启动,则不会调用任何程序。请检查此。。。。。。。。。。。检查这个。。。。。。。。。。。