这是我参与「第四届青训营 」笔记创作活动的第9天。
一、今日学习重点内容:
- Activity启动模式
二、详细知识点介绍
Activity启动模式
默认启动模式standard
这个模式下的Activity会按照创建顺序存入栈中,销毁时先进后销毁。
栈顶复用singleTop
如果采用这个模式,当栈顶为我们要新建的Activity时,就不会重复创建新的Activity了。
栈顶复用模式sigleTask
这个模式与上面的有什么区别呢?这个无论是不是栈顶都下不会重复创建已有的Activity,并将task内对应Activity实例上面所有的Activity弹出。
这样就不会重复创建已有的Activity,而是从栈中找到已有的Activity,并销毁该Activity上面的Activity。
全局唯一模式singleInstance
代码演示1
针对不允许重复返回的情景,就需要设置属性FLAG_ACTIVITY_CLEAR_TOP,避免无意义的重复返回。
其中布局文件中第一个页面设计一个跳转按钮,第二个页面设计一个跳回第一个页面的按钮。
java文件则如下:
代码演示2
登录成功后不再返回登录页面
一般App第一次打开需要登录,而登陆后不再返回登录页面。要实现这种功能,需要设置属性FLAG_ACTIVITY_CLEAR_TASK,该设置会清空当前活动栈里的所有实例,全清空后这个栈就没办法继续使用了,需要另创建一个活动栈,也就是说,需要再设置一个FLAG_ACTIVITY_NEW_TASK属性。代码如下:
布局文件:
java代码:
上图中用到了|运算符,它的运算规则是:0|0=0,0|1=1 ,1|0=1,1|1=1
总结:参与运算的两个对象只要其中一个是1那么结果就是1。
-
启动标志的值如下:
- Intent.FLAG_ACTIVITY_NEW_TASK:另起一个新栈
- Intent.FLAG_ACTIVITY_SINGLE_TOP:当栈顶为待跳转的活动实例时,用栈顶的实例
- Intent.FLAG_ACTIVITY_CLEAR_TOP:当栈中有待跳转的实例时,就重新创建一个新实例,删除原实例上面的所有实例。
- Intent.FLAG_ACTIVITY_CLEAR_TASK:跳转到新页面时,栈中原有实例都清空(常配合第一个使用,销毁一个栈则创建一个新的栈)
三、课后个人总结:
通过本节课学习对Activity的使用有了更深的认识。