繁体   English   中英

澄清Android活动onPause和onRestart

[英]Clarification Android Activity onPause and onRestart

我对Android中的活动生命周期有疑问。 当我有这样的代码时(使用正确的名称)

 newActivityButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), NextActivity.class);
                intent.putExtra("Info",correctInfo);
                startActivity(intent);
            }
        });

然后,“ NextActivity”进入前台。 但这是否意味着“ MainActivity”已停止? 根据下图,“ MainActivity”不再可见,因此也停止了吗?

编辑:如果我有3个活动链,该怎么办。 第一个仍然没有销毁吗?

活动生命周期图

仅当您使用finish()或相关方法隐式完成活动时,或者如果出于某种必要原因(大多数情况下,与设备的内存不足相关的活动),活动将被销毁,而系统在后台将其杀死。 如果之前的任何事件均未发生,则在后台进行的活动将达到其生命周期的onStop()状态,直到再次回到前台为止,如图所示。

因此,如果您遇到以下问题,请回答您的问题:

A-> B-> C如果您不对它们中的任何一个进行调用,并且系统没有终止任何后台活动,则A和B都将停止,但不会被破坏。

当MainActivity变得不可见并且另一个活动进入前台时,它将立即停止。 如果一系列活动接连启动,则所有活动都将处于停止状态(除非系统销毁该活动以释放内存和资源)。

请阅读有关后退堆栈和任务管理的本文

在android中,活动或任务(活动的集合)以堆栈的形式排列,称为“后堆栈”。

当当前活动启动一个新活动时,新活动将被推到堆栈的顶部并获得焦点。 先前的活动也保留在堆栈中,但是它处于停止状态,而系统保留了其用户界面的状态,因此可以恢复它。 同样,如果此新活动再次创建另一个活动,则新创建的活动将到达堆栈顶部,而当前活动将变为停止状态。

按下后退按钮后,最上面的活动将完成并从堆栈中弹出,并且堆栈中的下一个活动将以已保存的实例状态继续进行,因此感觉就像恢复了它的原处。

对于一个链,假设您有三个活动,A,B和C。A启动B,B启动C。因此,当C处于焦点位置时,您的A和B活动将处于停止状态(但仍处于后退状态)。 您可以在C上按后退并继续B,然后在B上按后退并继续A。如上所述,一旦按下后退,当前活动将从堆栈中弹出并完成。

通过我在顶部共享的同一网址:

注意:可以一次在后台执行多个任务。 但是,如果用户同时运行许多后台任务,则系统可能会开始破坏后台活动以恢复内存,从而导致活动状态丢失。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM