Android 横竖屏切换的Activity生命周期,很多公司和企业面试会问到横竖屏切换的Activity生命周期、Handler机制、单例模式

等,不过这几个是常问的,这篇博客主要说说横竖屏切换时Activity的生命周期


① 创建一个Activity,分别标注测试语句


<pre name="code" class="java">package com.example.engineerjspactivitry;/** * Android 横竖屏切换Activity生命周期 * @author Engineer-Jsp * @date 2014.10.27 * */import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.Menu;public class EngineerJspActivity extends Activity {    private static String Tag = "EngineerJspActivity";@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);Log.d(Tag, "onCreate()");setContentView(R.layout.activity_main);}@Overrideprotected void onStart() {super.onStart();Log.d(Tag, "onStart()");}    @Override    protected void onResume() {    super.onResume();    Log.d(Tag, "onResume()");    }    @Override    protected void onSaveInstanceState(Bundle outState) {    super.onSaveInstanceState(outState);    Log.d(Tag, "onSaveInstanceState()");    }    @Override    protected void onPause() {    super.onPause();    Log.d(Tag, "onPause()");    }    @Override    protected void onStop() {    super.onStop();    Log.d(Tag, "onStop()");    }    @Override    protected void onRestoreInstanceState(Bundle savedInstanceState) {    super.onRestoreInstanceState(savedInstanceState);    Log.d(Tag, "onRestoreInstanceState()");    }    @Override    protected void onDestroy() {    super.onDestroy();    Log.d(Tag, "onDestroy()");    }}

  
②运行Activity(没有切换屏幕的正常情况下启动Activity),得到如下结果:



③切换成横屏时的Activity生命周期:

Android 横竖屏切换的Activity生命周期演示-面试常问题_第1张图片

④换回竖屏的Activity生命周期:


⑤给清单文件加上android:configChanges="orientation"属性,重新启动Activity,没有切换屏幕时(正常启动)的生命周期:

Android 横竖屏切换的Activity生命周期演示-面试常问题_第2张图片

加上android:configChanges="orientation"属性,切换成横屏,Activity的生命周期:

Android 横竖屏切换的Activity生命周期演示-面试常问题_第3张图片

⑦加上android:configChanges="orientation"属性,换回竖屏,Activity的生命周期:

Android 横竖屏切换的Activity生命周期演示-面试常问题_第4张图片

⑧加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(未切屏幕):


加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(切成横屏):

Android 横竖屏切换的Activity生命周期演示-面试常问题_第5张图片

加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(换回竖屏):

Android 横竖屏切换的Activity生命周期演示-面试常问题_第6张图片

执行Home键之后的生命周期:



本人是拿平板测试的,结果如有出入,跟真实结果无关,谢谢~


其实真的横竖屏切换生命周期是如下:


之所以造成上述平板测试生命周期与真实生命周期不符合的主要原因是平板系统是4.2+的,而在Android4.0+之后,当我们使用禁止使用横竖屏切换属性时,需要额外添加一个属性"screenSize"

最后为:android:configChanges="orientation|keyboardHidden|screenSize"

最终结果就会和答案一致了,亲,你们去亲测下吧!

更多相关文章

  1. android使用自定义属性
  2. 笔记77-listview属性介绍
  3. 一些关于RelativeLayout属性的用法
  4. Android属性之excludeFromRecents
  5. 关于android的animation的xml定义中的android:interpolator属性
  6. Android的生命周期 Start onResume
  7. android 之activity生命周期(转载)

随机推荐

  1. Android多媒体开发 Pro Android(安卓)Med
  2. Android中的图片处理——色彩、形状拉伸
  3. 自定义RatingBar
  4. android中的按钮以图片的方式显示_基础篇
  5. Android(安卓)如何保证App切换到后台,或页
  6. android ksoap2 访问https javax.net.ssl
  7. android 设置头像以及裁剪功能
  8. Android--Intent常用(拨号,浏览器,联系人,Wi-
  9. Android(安卓)网星工具箱Beta版
  10. android 反编译入门