Android Configuration横竖屏切换时Activity生命周期调用


问题:横竖屏切换时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时

<activity
       android:name="com.virglass.beyond.activity.ConfigurationActivity">
</activity>

竖屏切换到横屏 Log 打印如下:


横屏切换到竖屏Log 打印如下:


总结:AndroidMainfist不设置Activity的android:configChanges时 横屏切换竖屏/竖屏切换横屏Activity各生命周期方法只调用一次。


2、第二种情况:设置Activity的android:configChanges=”orientation”时

<activity
      android:name="com.virglass.beyond.activity.ConfigurationActivity"
      android:configChanges="orientation">
</activity>


竖屏切换到横屏 Log 打印如下:


横屏切换到竖屏Log 打印如下:


总结:竖屏切换横屏时先调用onConfigurationChanged()方法,再调用Activity各生命周期方法, 横屏切换到竖屏只掉用onConfigurationChanged()方法。

3、第三种情况:设置Activity的android:configChanges="orientation|keyboard|keyboardHidden|screenSize" 时

<activity
      android:name="com.virglass.beyond.activity.ConfigurationActivity"
      android:configChanges="orientation|keyboard|keyboardHidden|screenSize">
</activity>


竖屏切换到横屏 Log 打印如下:


横屏切换到竖屏Log 打印如下:



总结: 横屏切换到竖屏,竖屏切换到横屏各调用一次onConfigurationChanged() 方法


4、第四种情况:设置Activity的android:configChanges=”orientation|keyboard|keyboardHidden” 时 一个或多个执行结果和第二种结果相同。

5、第五种情况:在第三种情况基础上再设置Activity的android:screenOrientation="portrait" 属性,横竖屏切换无任何打印。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值