Android学习之路---Activity四种启动模式

  首先解释下任务栈:
  每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1–>Activity2–>Activity3,则任务栈为:
  这里写图片描述
一、standard启动模式:
  该启动模式是默认的启动模式,在每次启动一个Activity时会新创建一个Activity对象,无论要启动的Activity是否存在。如图:
  这里写图片描述
二、singleTop启动模式:
  在当前任务栈中,判断栈顶是否存在当前的Activity,如果是,就直接使用,如果不是,再创建新的Activity放入栈顶。如图:
  这里写图片描述
三、singleTask启动模式: 
  在当前任务栈中,判断栈顶是否存在该Activity,如果不存在,则创建一个新的Activity入栈, 如果存在会把该Activity之上的所有Activity清除出栈,显示当前Activity。如图:
  这里写图片描述
四、singleInstance启动模式:
  新创建一个任务栈,放入新创建的Activity,该任务栈只允许存在同一个Activity实例,如果已存在需要的Actiity,那么会切换到存在该Activity的任务栈。如图:
  这里写图片描述

  下面说下设置启动模式的方法:
  1.在AndroidManifest.xml文件中设置,在所需要启动的Activity中设置:launchMode,有四种,上文已述。

 <activity
            android:name=".MainActivity6"
            android:label="@string/title_activity_main6"
            android:launchMode="standard">
 </activity>

  2.在代码中设置:下示代码是一个按钮的事件方法,利用Intent对象的setFlags()方法来传递参数从而设置启动模式

public void startFlags(View view) {
        Intent intent = new Intent(this, MainActivity6.class);
        //设置Activity的启动模式
        //Intent.FLAG_ACTIVITY_NEW_TASK在新的任务栈中启动Activity,如果有,在本任务中启动。类似于standard模式
        //Intent.FLAG_ACTIVITY_CLEAR_TASK;类似于singleTask启动模式
        //Intent.FLAG_ACTIVITY_CLEAR_TOP;类似于singTop启动模式
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);
    }

  最后说明,图例全部借用自meizixiong的博客
  小白之论,大神勿喷。
  PS:哪个大神解释下singleInstance模式到底如何启动,网上的说法不一,在此拜谢~
  
  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值