Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Configuration橫豎屏切換時Activity生命周期調用

Android Configuration橫豎屏切換時Activity生命周期調用

編輯:關於Android編程


問題:橫豎屏切換時Activity的生命周期?

測試環境:華為mate7

 

package com.virglass.beyond.activity;

import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;

import com.virglass.beyond.utils.LogUtil;

/**
 * 系統設置更改
 * @author Administrator
 *
 */
public class ConfigurationActivity extends Activity{
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuration);
        LogUtil.e(jintuo, ==== onCreate() ====);
    }
    
    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        LogUtil.e(jintuo, ==== onStart() ====);
    }
    
    @Override
    protected void onRestart() {
        // TODO Auto-generated method stub
        super.onRestart();
        LogUtil.e(jintuo, ==== onRestart() ====);
    }
    
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        LogUtil.e(jintuo, ==== onResume() ====);
    }
    
    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        LogUtil.e(jintuo, ==== onPause() ====);
    }
    
    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        LogUtil.e(jintuo, ==== onStop() ====);
    }
    
    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        LogUtil.e(jintuo, ==== onDestroy() ====);
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        // TODO Auto-generated method stub
        super.onConfigurationChanged(newConfig);
        LogUtil.e(jintuo, ==== onConfigurationChanged() ====);
    }
}

1、第一種情況:AndroidMainfist不設置Activity的android:configChanges時

 




豎屏切換到橫屏 Log 打印如下:

 

\

橫屏切換到豎屏Log 打印如下:

\

總結:AndroidMainfist不設置Activity的android:configChanges時 橫屏切換豎屏/豎屏切換橫屏Activity各生命周期方法只調用一次。

 

2、第二種情況:設置Activity的android:configChanges=”orientation”時

 


 

 

豎屏切換到橫屏 Log 打印如下:

\

橫屏切換到豎屏Log 打印如下:

\

總結:豎屏切換橫屏時先調用onConfigurationChanged()方法,再調用Activity各生命周期方法, 橫屏切換到豎屏只掉用onConfigurationChanged()方法。

3、第三種情況:設置Activity的android:configChanges=orientation|keyboard|keyboardHidden|screenSize 時

 


 

 

豎屏切換到橫屏 Log 打印如下:

\

橫屏切換到豎屏Log 打印如下:

\
 

總結: 橫屏切換到豎屏,豎屏切換到橫屏各調用一次onConfigurationChanged() 方法

 

4、第四種情況:設置Activity的android:configChanges=”orientation|keyboard|keyboardHidden” 時 一個或多個執行結果和第二種結果相同。

5、第五種情況:在第三種情況基礎上再設置Activity的android:screenOrientation=portrait 屬性,橫豎屏切換無任何打印。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved