代朝恒的博客

一只刚起步的新手司机,记录android之路上的点点滴滴

常用的使用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属性即可








阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Daisuki_ch/article/details/52374009
个人分类: android学习笔记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭