Android 横竖屏切换的Activity生命周期演示-面试常问题

本文详细解析Android横竖屏切换时Activity的生命周期变化,通过代码示例展示了不同屏幕方向下Activity的各个生命周期方法调用,包括创建、启动、暂停、恢复、保存状态、销毁等阶段,并探讨了配置变化对生命周期的影响。

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),得到如下结果:



③切换成横屏时的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"

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Engineer-Jsp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值