Activity的四种启动模式

第一种standrad:

  • android:launchMode=”standard”
    standard是默认的启动模式,即如果不指定launchMode属性,则自动就会使用这种启动模式。这种启动模式表示每次启动该Activity时系统都会为创建一个新的实例,并且总会把它放入到当前的任务当中。声明成这种启动模式的Activity可以被实例化多次,一个任务当中也可以包含多个这种Activity的实例。

第二种singleTop

  • singleTop是会检查栈顶元素是不是当前Activity,如果是的话就不创建新的实例,如果不是当前Activity的话就再次创建当前实例。startActivity(new Intent(CTestActivity.this,CTestActivity.class));
    比如说CTestActivity设置了加载方式为standrad,这句话执行10次,你就要按10次返回键才能返回到上一个界面,如果设置了加载方式是singleTop,你点一次返回键就好了。
  • 每次执行startActivity(new Intent(CTestActivity.this,CTestActivity.class))这句代码都会调用一下onNewIntent(Intent intent)方法,这个方法中的参数就是触发打开这个Activity的intent参数。
  • 注:生命周期方法是:onPause-onNewIntent。如果这个Activity不是在栈顶,就会再创建一下这个Activity的实例。应用范围主要是,应用发送了两条Notification,每次都是同一个Activity显示内容,就要设置launchMode了。

第三种singTask

  • 如果说singTop是查看当前栈顶是不是该Activity的实例,那么singTask就是搜索整个栈有没有该Activity实例了,如果有,就移除这个实例上面的所有其他Activity实例,显示这一个Activity的实例了。同样会调用onNewIntent()方法。
  • 注:一个APP默认只有一个任务栈,但是特殊情况下,比如说设置加载方式singleInstance或者设置flags为NEW_TASK了,就会新建一个任务栈了。

第四种singleInstance

  • Android群英传的例子举得比较好,比如说A程序想使用系统浏览器打开一个网页,B程序也想使用系统浏览器打开一个网页,这会浏览器就是一个单实例的。紧急呼叫界面也是单实例的。singInstance打开的界面是在一个单独的任务栈里面的。
  • 注:比如B是单实例的,A打开B,B在打开C,此时按下返回键返回到A了,A再按返回键返回到B了(因为AC所在的任务栈已经清空了)。因为B和AC不在一个任务栈中。
  • singTop和singleInstance类型的Activity调用startActivityForResult得不到返回数据。因为系统在FrameWork层就会认为不同Task(任务栈)之间不能互相传递数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值