Activity启动模式课堂笔记|青训营笔记

103 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第9天。

一、今日学习重点内容:

  • Activity启动模式

二、详细知识点介绍

Activity启动模式

默认启动模式standard

 这个模式下的Activity会按照创建顺序存入栈中,销毁时先进后销毁。

栈顶复用singleTop

 如果采用这个模式,当栈顶为我们要新建的Activity时,就不会重复创建新的Activity了。

栈顶复用模式sigleTask

 这个模式与上面的有什么区别呢?这个无论是不是栈顶都下不会重复创建已有的Activity,并将task内对应Activity实例上面所有的Activity弹出。

 这样就不会重复创建已有的Activity,而是从栈中找到已有的Activity,并销毁该Activity上面的Activity。

全局唯一模式singleInstance

代码演示1

 针对不允许重复返回的情景,就需要设置属性FLAG_ACTIVITY_CLEAR_TOP,避免无意义的重复返回。

其中布局文件中第一个页面设计一个跳转按钮,第二个页面设计一个跳回第一个页面的按钮。

java文件则如下:

image.png

代码演示2

登录成功后不再返回登录页面

 一般App第一次打开需要登录,而登陆后不再返回登录页面。要实现这种功能,需要设置属性FLAG_ACTIVITY_CLEAR_TASK,该设置会清空当前活动栈里的所有实例,全清空后这个栈就没办法继续使用了,需要另创建一个活动栈,也就是说,需要再设置一个FLAG_ACTIVITY_NEW_TASK属性。代码如下:

布局文件:

image.png

java代码:

image.png

 上图中用到了|运算符,它的运算规则是: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的使用有了更深的认识。