Activity启动模式

1, 在清单文件中<activity/>标签内部, 设置属性 android:launceMode=""
    支持四种属性:
        standard   标准模式, 默认的启动方式
        singleTop  栈顶单例模式
        singleTask 栈中单例模式
        singleInstance  全局单例模式
    作用:  内存的优化, 用户的体验

    1.1, standard  标准模式, 默认启动模式
       (拿来主义)  同一个Activity每次都会创建一个新的实例

    1.2, singleTop
       (拒绝堆叠)  同一个Activity可以实例化多次, 但是栈顶只能出现一个
       当栈顶不存在要启动的Activity实例时, 系统会创建一个新的Activity实例,并且放入栈的顶端
       当栈顶存在要启动的Activity实例时, 系统会调用onNewIntent()方法,把Intent对象传递给已经存在的Activity实例, 重用栈顶的Activity

    1.3, singleTask  浏览器
       (独立门户)   同一个Activity实例在栈中只能有一个
       当栈中不存在要启动Activity实例时, 系统会创建一个新的Activity实例, 并且放入栈的顶端
       当栈中已经存在要启动的Activity实例时, 系统会调用已存在的Activity的onNewIntent(),
        把Intent对象传递给已经存在的Activity实例(并不会创建新的实例),
        并且不允许栈的上方出现其他的Activity实例,它上方的Activity实例将会被移出栈中,销毁
        
     1.4, singleInstance
            (孤独寂寞) 
        当使用这种模式启动Activity时, 系统会分配一个当独任务, 并将 Activity的实例放入栈的底端
        他不允许其他的Activity实例和他共享一个栈

  2, 第二种方式:  在代码设置, Activity类中设置, 通过Intent对象设置

    intent.setFlags(.....);
    Intent.FLAG_ACTIVITY_SINGLE_TOP   等同于属性中的singleTop
    Intent.FLAG_ACTIVITY_CLEAR_TOP
    同sigleTask 相似, 当栈中不存在时创建; 如果存在那么会把它以及之上的所有实例移除,并且销毁.  创建一个新的实例放入栈的顶端
    Intent.FLAG_ACTIVITY_NEW_TASK
    必须要在清单文件的<activity/>标签中增加属性:
      android:taskAffinity="com.other"
      android:alwaysRetainTaskState="true"
     只有增加了这两个属性, 系统才会为当前的实例创建新的任务, 并且放到栈的底部, 否则等同于没有设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值