常用的使用FLAG的启动模式和横竖屏生命周期问题

FLAG启动模式

在意图Intent中设置属性(4种属性)
1.FLAG_ACTIVITY_CLEAR_TOP:
如果在意图中设置了此属性,那么跳转的activity启动时,将会检查任务栈中是否有自己存在,如果存在,则转换到该activity上,并把该activity上的其他activity全部出栈,如果不存在,则堆叠入栈顶。类似于singletask
2.FLAG_ACTIVITY_SINGLE_TOP:
在意图中定义次属性,跳转的activity启动时,将会检查栈顶的activity是否是本身的activity,如果是,则不会再往任务栈中添加跳转的activity,简单来说就是,activity跳转自己,则任务栈中不会重复的添加自身activity
3.FLAG_ACTIVITY_NO_HISTORY
跳转activity时,如果跳转后的activity再进行跳转,则任务栈中不会有该activity的记录。简单的理解为,该activity没有加入任务栈中。
4.FLAG_ACTIVITY_NEW_TASK
跳转activity时,如果该activity设置了singletask启动模式,则会先找到存放该singletask的栈,再把该activity堆叠进栈,如果没有设置singletask启动模式,则会创建一个栈,来存放该activity。如果该activity不是正常途径启动,则要在intent中添加FLAG_ACTIVITY_NEW_TASK属性

横竖屏时的生命周期问题


横屏H,竖屏V
保存数据onsaveinstancestate
加载数据onrestoreinstancestate
启动时H-->oncreate-->onstart->>onresume启动
切换时-->H-->onpause-->onsaveinstancestate-->onstop-->ondestroy-->V-->oncreate-->onstart-->onrestoreinstancestate-->onresume
再切换时同上

如果在清单文件那边设置configchanges="orientation"时
则会在onresume后onconfigurationchanged

如果在清单文件那边设置configchanges="orientation|keyboardhidden"
则只打印onconfigurationgchanged和onconfigchanged

targetsdkversion<12时,不用重新创建activity
targetsdkversion>12时,需要重新创建activity

如果在清单文件那边设置configchanges="orientation|keyboardhidden|screensize"
则只会执行onconfigurationgchanged
targetsdkversion>12时,设置下screensize属性即可








  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值