进程终止时的Android活动堆栈依赖关系

进程终止时的Android活动堆栈依赖关系,android,process,android-activity,lifecycle,Android,Process,Android Activity,Lifecycle,假设有流程P1的活动A1和流程P2的活动A2启动了活动A1。活动A2将需要处理相当多的事情,这使得系统必须为RAM杀死P1。我不知道会发生什么 我现在可以看到,如果在启动活动A2后通过应用程序管理器强制终止进程P1,当我退出设置屏幕时,活动A2也会消失 在我按下“强制停止”按钮之前,活动堆栈如下所示: 在我击中它之后,它看起来会是这样的: Home -> Settings -> Apps -> App info 虽然我只杀死了A1的进程,但A2也被摧毁了 一切顺利。我想没人希

假设有
流程P1的
活动A1
流程P2的
活动A2
启动了
活动A1
。活动A2将需要处理相当多的事情,这使得系统必须为RAM杀死P1。我不知道会发生什么

我现在可以看到,如果在启动
活动A2
后通过
应用程序管理器
强制终止
进程P1
,当我退出设置屏幕时,活动A2也会消失

在我按下“强制停止”按钮之前,活动堆栈如下所示:

在我击中它之后,它看起来会是这样的:

Home -> Settings -> Apps -> App info
虽然我只杀死了A1的进程,但A2也被摧毁了

一切顺利。我想没人希望A1被摧毁后A2还能活着。但我想知道A1被杀死后A2是否可能存活,我的程序必须研究这种情况:

Home -> A2
A2完成后,将创建A1以接受A2的结果



做了更多的“研究”。如果A1启动A2,当内存不足时,4.0.3仿真器将杀死P2而不是P1。也就是说,A2将被关闭,即使它是前台活动。

启动时的活动保存在后堆栈上,浏览过的每个活动都保存在此堆栈上,当移动到另一个活动时,可以使用finish()方法终止该活动,这样,当浏览到同一活动时,同一活动的另一个实例不会再次推送到堆栈上

例如:

A1             ---->            A2            ----->             A3
A1的第一个实例进入后退
A2的第一个实例进入后退
A3的第一个实例进入后台

A1             <----            A2            <-----            A3

A1启动时的活动保存在后堆栈上,浏览过的每个活动都保存在此堆栈上,可以使用finish()方法在移动到另一个活动时终止该活动,以便在浏览到同一活动时,不会再次将同一活动的另一个实例推送到堆栈上

例如:

A1             ---->            A2            ----->             A3
A1的第一个实例进入后退
A2的第一个实例进入后退
A3的第一个实例进入后台

A1             <----            A2            <-----            A3

A1但我们可以通过终止进程来终止堆栈上的活动。因此,如果Activity1的进程被终止,那么该活动也将被终止,但这不应影响堆栈上Activity2的状态。。。不是吗@但事实上,它确实会影响。这是合理的,尽管似乎没有记录在案。你可以自己试试。只要A2是由A1打开的,当A1的进程被终止时,如果A2被保留,这将很难处理。好的……我一定会尝试这个……感谢分享知识,但我们可以通过终止进程来终止堆栈上的活动。因此,如果Activity1的进程被终止,那么活动也会被终止,但这不应该影响堆栈上Activity2的状态。。。不是吗@但事实上,它确实会影响。这是合理的,尽管似乎没有记录在案。你可以自己试试。只要A2是由A1打开的,如果A1的进程被终止时A2被保留,那就很难处理了。好的……我一定会试试这个……谢谢分享知识