横竖屏切换时候activity的生命周期

通过以下部分代码,我们可以了解清楚Activity页面在横,竖屏切换时,生命周期的变化:
Java代码 
public class AndroidLifecycle extends Activity {  
 
    public void onCreate(Bundle savedInstanceState) {  
        System.out.println("First Activity =======onCreate()========");  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
    }  
 
    @Override 
    protected void onSaveInstanceState(Bundle outState) {  
        System.out  
                .println("First Activity =======onSaveInstanceState()========");  
        super.onSaveInstanceState(outState);  
    }  
 
    @Override 
    protected void onRestoreInstanceState(Bundle outState) {  
        System.out  
                .println("First Activity =======onRestoreInstanceState()========");  
        super.onRestoreInstanceState(outState);  
    }  
 
    @Override 
    public void onConfigurationChanged(Configuration newConfig) {  
        System.out  
                .println("First Activity =======onConfigurationChanged()========");  
        super.onConfigurationChanged(newConfig);  
    }  
 
    // Called after onCreate — or after onRestart when the activity had been  
    // stopped, but is now again being displayed to the user. It will be  
    // followed by onResume  
    protected void onStart() {  
        System.out.println("First Activity =======onStart()========");  
        super.onStart();  
    }  
 
    // Called after onRestoreInstanceState, onRestart, or onPause, for your  
    // activity to start interacting with the user  
    protected void onResume() {  
        System.out.println("First Activity =======onResume()========");  
        super.onResume();  
    }  
 
    // Called as part of the activity lifecycle when an activity is going into  
    // the background, but has not (yet) been killed  
    protected void onPause() {  
        System.out.println("First Activity =======onPause()========");  
        super.onPause();  
    }  
 
    // Called when you are no longer visible to the user. You will next receive  
    // either onRestart, onDestroy, or nothing, depending on later user  
    // activity.  
    protected void onStop() {  
        System.out.println("First Activity =======onStop()========");  
        super.onStop();  
    }  
 
    // Perform any final cleanup before an activity is destroyed  
    protected void onDestroy() {  
        System.out.println("First Activity =======onDestroy()========");  
        super.onDestroy();  
    }  
 
    // Called after onStop when the current activity is being re-displayed to  
    // the user (the user has navigated back to it). It will be followed by  
    // onStart and then onResume  
    protected void onRestart() {  
        System.out.println("First Activity =======onRestart()========");  
        super.onRestart();  
    }  


public class AndroidLifecycle extends Activity {

public void onCreate(Bundle savedInstanceState) {
System.out.println("First Activity =======onCreate()========");
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

@Override
protected void onSaveInstanceState(Bundle outState) {
System.out
.println("First Activity =======onSaveInstanceState()========");
super.onSaveInstanceState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle outState) {
System.out
.println("First Activity =======onRestoreInstanceState()========");
super.onRestoreInstanceState(outState);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
System.out
.println("First Activity =======onConfigurationChanged()========");
super.onConfigurationChanged(newConfig);
}

// Called after onCreate — or after onRestart when the activity had been
// stopped, but is now again being displayed to the user. It will be
// followed by onResume
protected void onStart() {
System.out.println("First Activity =======onStart()========");
super.onStart();
}

// Called after onRestoreInstanceState, onRestart, or onPause, for your
// activity to start interacting with the user
protected void onResume() {
System.out.println("First Activity =======onResume()========");
super.onResume();
}

// Called as part of the activity lifecycle when an activity is going into
// the background, but has not (yet) been killed
protected void onPause() {
System.out.println("First Activity =======onPause()========");
super.onPause();
}

// Called when you are no longer visible to the user. You will next receive
// either onRestart, onDestroy, or nothing, depending on later user
// activity.
protected void onStop() {
System.out.println("First Activity =======onStop()========");
super.onStop();
}

// Perform any final cleanup before an activity is destroyed
protected void onDestroy() {
System.out.println("First Activity =======onDestroy()========");
super.onDestroy();
}

// Called after onStop when the current activity is being re-displayed to
// the user (the user has navigated back to it). It will be followed by
// onStart and then onResume
protected void onRestart() {
System.out.println("First Activity =======onRestart()========");
super.onRestart();
}
}


AndroidMenifest.xml文件:
Java代码 
<?xml version="1.0" encoding="utf-8"?>  
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="cn.d" android:versionCode="1" android:versionName="1.0">  
    <!-- android:configChanges="orientation" -->  
    <application android:icon="@drawable/icon" android:label="@string/app_name">  
        <activity android:name=".AndroidLifecycle" android:label="@string/app_name" 
            android:configChanges="orientation|keyboardHidden">  
            <intent-filter>  
                <action android:name="android.intent.action.MAIN" />  
                <category android:name="android.intent.category.LAUNCHER" />  
            </intent-filter>  
        </activity>  
    </application>  
</manifest>  

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.d" android:versionCode="1" android:versionName="1.0">
<!-- android:configChanges="orientation" -->
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".AndroidLifecycle" android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>


通过以上代码,我们可以知道:
1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次.

2.设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次.

3.设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.

你可能感兴趣的:(Activity)