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"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d(Tag, "onCreate()"); setContentView(R.layout.activity_main); } @Override protected 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生命周期:
⑤给清单文件加上android:configChanges="orientation"属性,重新启动Activity,没有切换屏幕时(正常启动)的生命周期:
⑥加上android:configChanges="orientation"属性,切换成横屏,Activity的生命周期:
⑦加上android:configChanges="orientation"属性,换回竖屏,Activity的生命周期:
⑧加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(未切屏幕):
⑨加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(切成横屏):
⑩加上android:configChanges="orientation|keyboardHidden"属性,正常启动Activity的生命周期(换回竖屏):
执行Home键之后的生命周期:
本人是拿平板测试的,结果如有出入,跟真实结果无关,谢谢~
其实真的横竖屏切换生命周期是如下:
之所以造成上述平板测试生命周期与真实生命周期不符合的主要原因是平板系统是4.2+的,而在Android4.0+之后,当我们使用禁止使用横竖屏切换属性时,需要额外添加一个属性"screenSize"
最后为:android:configChanges="orientation|keyboardHidden|screenSize"
最终结果就会和答案一致了,亲,你们去亲测下吧!