任玉刚【Android开发艺术探索】读后笔记二

1、standard,标准模式,也是系统的默认模式。每次启动一个Activity都会重新建一个新的实例,不管这个实例是否已经存在。standard模式的Activity默认会进入启动它的Activity所属的任务栈中;

2、singleTop,栈顶复用模式。在这种模式下,如果新的Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前请求的信息。onCreate和onStart不会被调用;

3、singleTask,栈内复用模式。在这种模式下,只要Activity在一个栈中存在,那么多次启动此Activity都不会重新创建实例,也会回调onNewIntent。这种模式默认具有clearTop的效果,会导致调用的Activity之上的Activity全部出栈;

4、singleInstance,单实例模式。它除了具有singleTask模式的所有特性外,还加强了一点,就是具有此种模式的Activity只能单独地位于一个任务栈中;

5、默认情况下,所有Activity所需的任务栈的名字为应用的包名,我们也可以为每个Activity都单独指定TaskAffinity,这个属性的值为字符串,且中间必须含有包名分隔符“.”,不能与包名相同,否则就相当于没有指定;

6、TaskAffinity属性主要和singleTask启动模式或者allowTaskReparenting属性配对使用,在其他情况下没有意义;

7、给Activity指定启动模式有两种方法,第一种是通过AndroidMenifest为Activity指定启动模式,第二种是通过在Intent中设置标志位。但两种方法还有一定的区别:首先,第二种方式的优先级高于第一种;其次,两种方式在限定范围上有所不同,比如,第一种方式无法为Activity设定FLAG_ACTIVITY_CLEAR_TOP标识,而第二种方式无法为Activity指定singleInstance模式;

8、FLAG_ACTIVITY_NEW_TASK作用是为Activity指定“singleTask”启动模式;

9、FLAG_ACTIVITY_SINGLE_TOP作用是为Activity指定“singleTop”启动模式;

10、FLAG_ACTIVITY_CLEAR_TOP,具有这个标记位的Activity,当它启动时,在同一个任务栈中所有位于它上面的Activity都要出栈,这个标记位一般会和singleTask启动模式一起出现。如果被启动的Activity采用standard模式启动,那么它连同它之上的Activity都要出栈,系统会创建新的Activity实例并放入栈顶;

11、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,具有这个标记位的Activity不会出现在历史Activity的列表中,当某些情况下我们不希望用户通过历史列表返回到我们的Activity的时候这个标记比较有用。它等同于在XML中指定Activity的属性android:excludeFromRecents="true"。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值