Activity的启动模式和横竖屏切换

一. Activity 依靠任务栈,按照先进后出的原则,记录和维护当前开启的Activity。Android为了维护用户更好的体验,提供了以下4种启动模式:

1.Standard的启动模式:每开启一个activity,就会往栈中增加一个activity,不考虑是否有重复的activity被一再开启。

2.SingleTop的启动模式:如果发现任务栈的栈顶已经存在这个activity,再去开启activity的时候,不会去重新创建新的activity,而是复用已经存在的activity。这样可以避免同一个界面被重复的开启。一般浏览器,浏览器书签,发短信会用到此模式.

3.SingleTask的启动模式:开启一个activity的时候,检查任务栈中是否存在这个activity的实例。如果存在,则清空这个任务栈activity上的所有activity,复用这个activity. 为了避免创建过多的浏览器activity,浏览器一般会采用这种模式,节约内存空间和CPU资源。

4.SingleInstance 模式:开启一个新的任务栈,任务栈里面只有一个activity的实例存在。如果这个activity被开启,把这个任务栈放在前面,如果开启了新的别的activity,则新的别的activiy所在的任务栈会被放在前面。如打电话,来电的activity。

二. Activity的启动模式的配置:
在AndroidManifest.xml中,在对应的activity中配置:
android:launchMode=”standard/singleTop/singleTask/singleInstance”即可。

三.Activity横竖屏切换的生命周期:
1.生命周期:当启动一个activity时候,系统会自动去调用如下方法:onCreate==>onStart==>onResume, 而当开始切换为横屏/竖屏的时候,会调用:onPause==>onStop==>onDestroy==>onCreate==>onStart==>onResume。说明之前的activity被销毁,又开启了一个新的activity.

2..如果想要横竖屏切换不改变activity的生命周期(如一些游戏界面),解决方案有两种:
第一种:直接定义好屏幕是横屏还是竖屏:在AndroidManifest.xml中,对应的activity中配置android:screenOrientation=”landscape/portrait” ===》定义好横竖屏

第二种:还是在AndroidManifest.xml中配置:最后一个属性screenSize是针对4.0以上高版本增加的。而低版本的只需要设置前面2个参数即可。android:configChanges=”orientation|keyboardHidden|screenSize”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值