![](/img/trans.png)
[英]How can I use onRestart() to unpause/restart a thread in an Android Activity?
[英]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.