Activity的四种启动方式

Activity的四种启动模式

一、standard模式

1.默认的启动模式,不写启动模式的话,系统就会自动使用这一模式。 
2.在standard模式下,每次启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,每次启动都会创建一个新的示例。 
3.适用于绝大多数的应用场景。

举例:有一个FirstActivity,里面有个按钮,让它再次跳转到FirstActivity,多点几次。然后点击返回,它会一个一个的进行返回操作。就像是一个无盖的盒子,点击一次放进去一个东西,再点击一次,又把新(也可能是同一个)东西放在以前的东西上面,一层层的摞起来,当你要取出来东西的时候,当然要自上而下的取出来。


运行的时候你点击几次就返回几次。

二.singleTop模式

1.singleTop启动模式和standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它,不会在创建新的实例。 
2.解决了用户体验的问题,避免已经打开的页面被重复打开多次

举例:在这个模式下,FirstActivity中一个按钮跳转到FirstActivity,这时,不管你点击多少次按钮,它就只会建立一个实例,因为都是相同的Activity,这个Activity一直都在栈顶,他不会再重新建一个实例,点击一次返回直接退出。那我们想一想,如果让FirstActivity-SecondActivity-FirstActivity,这样就和standard一样了,因为栈顶一直都在变。


它的特点是 不会打开多个已经打开的页面

三.singleTask模式

1.当Activity的启动模式为singleTask时,每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果已经存在则直接使用实例,并将当前Activity之上的所有Activity出栈,如果没有则创建一个新的实例。(当我们要创建FirstActivity的实例的时候,他会查询栈中是否有相同的实例,如果有,在栈顶,那和singleTop一样,不在栈顶,把FirstActivity的实例上面的直接销毁,让FirstActivity作栈顶。相同的实例不会再创建第二次。) 
2.资源开销(内存占用、CPU占用)非常大的使用该模式。

它的特点是打开已经存在的,移除后面的。

四.singleInstance模式

1.singleInstance模式加载Activity时,只会创建一个Activity实例,并且会使用一个全新的任务栈来加载该Activity实例。(当加载FirstActivity的时候,如果有,直接用;如果没有,创建一个Task,把自己实例化了放进去。然后它只允许它自己在这个栈中。如果现在想加载SecondActivity,它会再创建一个Task,实例化后放进去。如果想再加载FirstActivity,就直接调用之前创建的那个。) 
2.特点是整个手机操作系统里只有一个实例存在。

采用这种模式分为两种可能:

一是如果要启动的Activity不存在,系统会先创建一个新的任务栈,再创建该Activity的实例,并把该Activity放入栈顶。

二是如果要启动的Activity已经存在,无论位于哪个应用程序或者哪个栈中,系统都会把该Activity所在的任务栈转到前台,使该Activity显示出来。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值