<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/txtField1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
当包含视图的活动被销毁时,只有那些在这个活动中被命名的视图(通过android:id属性)才能保持它们的状态。
例如,在向EditText视图中输入一些文本的同时,用户可能会改变显示方向。出现这种情况时,EditText视图中的任何文本将被保持并在活动重新创建时自动恢复。相反,如果没有使用android:id属性命名EditText视图,活动将无法保持视图中当前所含文本。
package com.example.androidtest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
public class OrientationsActivity extends Activity {
private final String TAG = "StateInfo";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_orientations);
Log.d(TAG, "onCreate");
}
@Override
public void onStart() {
Log.d(TAG, "onStart");
super.onStart();
}
@Override
public void onResume() {
Log.d(TAG, "onResume");
super.onResume();
}
@Override
public void onPause() {
Log.d(TAG, "onPause");
super.onPause();
}
@Override
public void onStop() {
Log.d(TAG, "onStop");
super.onStop();
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
}
@Override
public void onRestart() {
Log.d(TAG, "onRestart");
super.onRestart();
}
}
输出:
当设备改变方向时,活动先被销毁:
onPause
onStop
onDestroy
然后,它被重建:
onCreate
onStart
onResume
对于任意活动,应该在onPause()事件中保存任何您需要保存的状态,这一事件在每次活动改变方向时触发。