关闭

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

136人阅读 评论(0) 收藏 举报
分类:

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:11067次
    • 积分:480
    • 等级:
    • 排名:千里之外
    • 原创:36篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    文章分类
    最新评论