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属性即可