Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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中活动重建和流程重建的区别_Android_Process_Activity Lifecycle - Fatal编程技术网

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()
。我在回答的第一段列举了其中的几个。一旦某个活动被销毁,如果再次需要该活动的实例(例如,用户重新启动应用程序),则会创建一个新的实例。

一些相关信息:啊,太好了,完美地回答了我的问题!再次感谢您的及时回复。