Activity启动模式总结

Activity启动模式设置:

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

Activity的四种启动模式:

standard模式

每次startActivity()打开页面都会创建新的Activity实例,并放入任务栈中。


singleTop模式:
        如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。

singleTask模式
        如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent()方法)。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。

如图所示:Activity启动方式为:a->b->c->d->再次进入b.
如果b的属性是standard,此时按back建,会依次显示d,c,b,a页面。
如果b的属性为singleTask,因为singTask会将当前栈顶的所有元素弹出,此时按back建,会依次显示b,a页面,然后退出。



singleInstance模式:

        在新栈中创建该Activity实例,并让多个应用共享栈中的Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。


Activity的启动顺序为a->b->c->d
singleInstance情况下,按back键依次显示d,c,a,b。其实在很多情况下,我们希望显示完a界面后直接退出。
以下2种策略可以解决,但相信还有更好的方式可以解决。
        1.在a界面添加back键监听,弹出退出应用对话框。
        2.在b Activity的onStop方法中添加finish方法。

注意:Launch mode如果是singleInstance,使用StartActivityForResult()方法将失效,新的activity刚启动恳求方的onActivityResult就会执行。


Intent Flag相关:

参考:http://blog.sina.com.cn/s/blog_6f3ff2c90101j50x.html


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值