Android基础(七) Activity的生命周期

1.Activity的三种状态

    运行状态:Activity在最前端运行

    停止状态:Activity不可见,完全被覆盖

    暂停状态:Activity可见,但前端还有其他Activity

2.Activity生命周期的相关方法

    onCreate():在Activity创建时调用,或者程序在暂停、停止状态下被杀死之后,重新打开时也会调用。

    onStart():onCreate()方法被调用以后,或者Activity从停止状态恢复到运行状态时调用。

    onResume():onStart()方法被调用以后,或者Activity从暂停状态恢复到运行状态时会调用。

    onPause():Activity进入暂停、停止状态,或者Activity销毁时都会调用。

    onStop():Activity进入停止状态,或者Activity销毁时会调用。

    onDestroy():Activity销毁时调用。

    onRestart():Activity从停止状态恢复到运行状态时会调用,并且会依次调用onStart()、onResume()方法。

clip_image002

 

3.横竖屏切换时Activity的行为

    默认情况下,Activity会随着传感器方向的改变而改变,而可见的Activity在横竖屏切换的时候会被销毁重绘。

    onSaveInstanceState(Bundle outState):在Activity被动的摧毁或者停止的时候调用,用于保存程序运行时的数据,可以将数据保存在Bundle中。

    onRestoreInstanceState(Bundle savedInstanceState):该方法在Activity被重绘时调用,savedInstanceState就是onSaveInstanceState(Bundle outState)方法保存下来的数据。

    如果不希望Activity被摧毁重绘,可以在对应的<activity>标签中设置如下属性:

        android:configChanges="orientation"

    这样在改变方向时就会执行onConfigurationChanged()方法,而不会摧毁重绘。

    如果需要指定Activity的方向,可以在<activity>标签中设置如下属性:

        android:screenOrientation=””

public class MainActivity extends Activity {

	

	@Override

	public void onConfigurationChanged(Configuration newConfig) {

		super.onConfigurationChanged(newConfig);

		System.out.println("横竖屏切换: " + newConfig.orientation);

	}

	

	@Override

	protected void onSaveInstanceState(Bundle outState) {

		super.onSaveInstanceState(outState);

		System.out.println("onSaveInstanceState");

		outState.putString("data", "销毁前存储的数据!!!");

	}

	

	@Override

	protected void onRestoreInstanceState(Bundle savedInstanceState) {

		super.onRestoreInstanceState(savedInstanceState);

		System.out.println("onRestoreInstanceState");

		System.out.println(savedInstanceState.getString("data"));

	}

	

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        System.out.println("onCreate");

        System.out.println(savedInstanceState == null ? "null" : savedInstanceState.getString("data"));

    }

    

	protected void onStart() {

		super.onStart();

		System.out.println("onStart");

	}



	protected void onRestart() {

		super.onRestart();

		System.out.println("onRestart");

	}



	protected void onResume() {

		super.onResume();

		System.out.println("onResume");

	}

	

	protected void onPause() {

		super.onPause();

		System.out.println("onPause");

	}



	protected void onStop() {

		super.onStop();

		System.out.println("onStop");

	}



	protected void onDestroy() {

		super.onDestroy();

		System.out.println("onDestroy");

	}



	public void full(View view) {

    	startActivity(new Intent(this, FullScreenActivity.class));

    }

    

    public void dialog(View view) {

    	startActivity(new Intent(this, DialogActivity.class));

    }

}
public class FullScreenActivity extends Activity {

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.full);

    }

}

清单文件:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.xxx.life"

    android:versionCode="1"

    android:versionName="1.0" >



    <uses-sdk android:minSdkVersion="10" />



    <application

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name" >

        

        <activity

            android:screenOrientation="fullSensor"

            android:configChanges="orientation"

            android:name=".MainActivity"

            android:label="@string/app_name" >

            <intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>

        </activity>

        

        <activity  android:name=".FullScreenActivity" />

        <activity  android:name=".DialogActivity" android:theme="@android:style/Theme.Dialog" />

    </application>



</manifest>

你可能感兴趣的:(Activity)