我一直试图弄清楚这一点,但我现在似乎陷入了困境。基本上,我试图了解 Activity 何时被销毁和重新创建与它运行的进程何时被销毁和重新创建之间的区别。
根据此处的图表:http: //developer.android.com/reference/android/app/Activity.html,似乎只有在重新创建底层应用程序进程时才重新创建活动。
但是,假设我用一个按钮创建了一个简单的程序:
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。所以必须重新创建 Activity。
但是,程序一直在运行(正如您在任务管理器中看到的那样),因此该进程没有被破坏。
同样,如果我将变量 test 更改为静态变量,那么尽管 Activity 被销毁并重新创建,它仍会保留其值。所以流程必须与Activity不同。
根据 Android Activity 网站上的图表,只有当底层进程的内存太少时才会重新创建 Activity,但这里似乎在许多其他场景中重新创建它 - 例如屏幕方向,转到主菜单等
所以我的问题是:Activity 生命周期和底层 Process 生命周期有什么区别?是否存在 Android 图表中未描述的 Activity 重新创建路径,它保留了底层进程?
非常感谢您对这个问题的任何帮助!