Activity启动模式

    最近感觉技术遇到了瓶颈,同事推荐了任玉刚大神的《Android开发艺术探索》一书,同时在学习的过程中,准备用博客的形式记录下学习过程,方便以后查阅。
    以下内容及后续本次学习系列博客源自《Android开发艺术探索》

一、Activity四种启动模式说明:

1. standard
    标准模式,系统的默认启动模式,每次启动Activity都会重新创建一个实例。被创建的实例生命周期按照正常启动执行 onCreate(),onStart(),onResume()。同时,谁启动了这个新的Activity,这个Activity就启动到谁的任务栈中。

2. singleTop
    栈顶复用模式,这种模式下,如果新的Activity已经位于任务栈的栈顶,那么不会重新创建实例,会调用onNewIntent()方法。如果不是位于栈顶,仍然会创建新的实例。
    例如,任务栈中有ABCD四个Activity,A位于栈底,D位于栈顶,此时:

  • 再次启动D,如果D启动模式为singleTop,则不会创建D的实例,任务栈中仍为ABCD

  • 再次启动D,如果D启动模式为standard,会创建D的实例,任务栈中为ABCDD

  • 再次启动C,如果C启动模式为singleTop,会创建C的实例,任务栈中为ABCDC

3. singleTask
    栈内复用模式,只要一个Activity在一个栈内存在,那么多次启动此Activity都不会创建新实例,也会调用onNewIntent()方法。
    如果任务栈内有ABC三个Activity,此时再次启动B,如果B的启动模式为singleTask,则会将B移至栈顶,同时调用onNewIntent()方法,并且singleTask启动模式具有clearTop效果,结果是任务栈中变为AB。

4. singleInstance
    单实例模式,此模式除了具有singleTask的特性外,设置了此模式的Activity只能单独的位于一个任务栈中,如果A的启动模式为singleInstance,启动A时,系统会为它创建一个任务栈,后续启动A都不会再次创建实例。

二、给Activity设置启动模式的两种方式:

1. AndroidMenifest配置

<activity android:name=".MainActivity"
          android:launchMode="singleTop">
</activity>

2. Intent设置

Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);









第一次写博客还有点小紧张呢 @~@

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值