屏幕方向变化时活动的行为

作者:追风剑情 发布于:2015-7-17 21:42 分类:Android

<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()事件中保存任何您需要保存的状态,这一事件在每次活动改变方向时触发。

标签: Android

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号