android中活动重建和流程重建的区别
我一直想弄明白这一点有一段时间了,但我现在似乎被困在进展中。基本上,我试图理解当一个活动被销毁和重新创建时,与它运行的进程被销毁和重新创建时的区别 根据这里的图表:,似乎只有当且仅当底层应用程序流程被重新创建时,活动才会被重新创建 但是,假设我创建了一个简单的程序,只有一个按钮:android中活动重建和流程重建的区别,android,process,activity-lifecycle,Android,Process,Activity Lifecycle,我一直想弄明白这一点有一段时间了,但我现在似乎被困在进展中。基本上,我试图理解当一个活动被销毁和重新创建时,与它运行的进程被销毁和重新创建时的区别 根据这里的图表:,似乎只有当且仅当底层应用程序流程被重新创建时,活动才会被重新创建 但是,假设我创建了一个简单的程序,只有一个按钮: public class HelloAndroidActivity extends Activity { private int test = 15; /** Called when the activity is
public class HelloAndroidActivity extends Activity {
private int test = 15;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(getApplicationContext(), test + " ", Toast.LENGTH_SHORT)
.show();
test++;
}
});
}
}
现在它会告诉我数字15,16,17。。。当我点击按钮时。但是,如果我离开程序,进入主菜单并重新输入,或更改屏幕方向,则它将重新设置为15。因此,必须重新创建活动
但是,程序一直在运行(当您转到任务管理器时可以看到),因此进程没有被破坏
类似地,如果我将变量test更改为静态变量,那么即使活动被销毁和重新创建,它仍会保留其值。因此,过程必须与活动不同
根据Android活动网站上的图表,只有当底层进程的内存太少时,才会重新创建活动,但在这里,它似乎是在许多其他场景中重新创建的——例如屏幕方向、进入主菜单等
所以我的问题是:活动生命周期和底层流程生命周期之间有什么区别?是否有一条Android图表中没有描述的活动再创建路径保留了底层流程
非常感谢您对这个问题的帮助
根据这里的图表:,似乎只有当且仅当底层应用程序流程被重新创建时,活动才会被重新创建
有许多事情会破坏活动,包括调用finish()
、用户按下后退按钮(默认情况下,会触发对finish()
)的调用,或者正在进行配置更改的设备(默认情况下,会破坏并重新创建前台活动)
但是,如果我离开程序,进入主菜单并重新输入,或更改屏幕方向,则它将重新设置为15。因此,必须重新创建活动
如果“离开程序”,你的意思是“按下后退按钮”,那么这是有意义的。类似地,从纵向切换到横向也是一种配置更改,因此也有意义
但是,程序一直在运行(当您转到任务管理器时可以看到),因此进程没有被破坏
对
因此,过程必须与活动不同
对。一个应用程序可能有几十个或数百个活动,以及许多其他组件(服务等)。默认情况下,它们都是单个进程的一部分
根据Android活动网站上的图表,只有当底层进程的内存太少时,才会重新创建活动
没有
活动生命周期和底层流程生命周期之间的区别是什么
该进程将保留在内存中,直到Android需要内存来做其他事情。Android会根据正在发生的事情来选择终止进程,比如年龄、活动组件等。您可以了解更多
还有,是否有一条在Android图表中没有描述的、保留底层流程的活动再创建路径?”
有许多东西会破坏一个活动,图中的箭头指向
onDestroy()
。我在回答的第一段列举了其中的几个。一旦某个活动被销毁,如果再次需要该活动的实例(例如,用户重新启动应用程序),则会创建一个新的实例。一些相关信息:啊,太好了,完美地回答了我的问题!再次感谢您的及时回复。