Activity启动模式

Activity启动模式

一,模式简介

Activity的启动模式主要分为四种:Standard,SingleTop,SingleTask,SingleIntance。
其配置方式为:在AndroidMainTest.xml对应Activity标签下,增加android:launchMode=”singleTop” 属性。

引入一个概念:Task栈。
它与Activity是共生的,用来在内存中管理Activity,其对应关系为:一个Activity只能对应一个Task栈,一个Task栈有可能对应多个Activity。Task栈的原理可以参考http://blog.csdn.net/janice0529/article/details/40905285,里边有较为详细的讲解,本篇文章主要目的是理清四种启动模式的原理。

二,模式机制

1,Standard模式
每次启动Activity都会去新建一个Activity实例;

2,SingleTop模式
每次启动Activity会去检测:当前Task栈栈顶元素是不是就是要启动的Activity的实例?如果是,则直接调用,不会新建Activity;如果不是,则新建Activity实例,并将该实例压栈;

3,SingleTask模式
每次启动Activity会去检测:当前Task栈中是否存在要启动的Activity的实例?如果是,则将该实例以上的元素全部出栈,使该元素位于栈顶,不会新建Activity;如果不是,则新建Activity实例,并将该实例压栈;

4,SingleInstance模式
启动Activity会重新创建一个Task栈,并在该栈中保存该Activity实例,并且不允许其他实例入栈。

三,模式总结

1,前两种启动模式,都会出现新建Activity实例的现象;后两种启动模式,可以保障Activity实例的唯一性;

2,Standard模式可以应用在任意场景下,当应用有特殊要求时,可以考虑使用其他三种模式;
SingleTop模式可以应用在保存状态的场景下,比如,在阅读某应用新闻列表时,没有阅读完毕,退出,重新进入则会显示关闭前的阅读状态,退出选择其他则会新建页面Activity。
SingleTask模式可以应用在程序的入口Activity上,比如进入应用的主界面Activity;
SingleInstance模式可以应用在与主要应用业务逻辑关联性较小、独立性较大的Activity上。比如,闹铃提醒可以和闹铃设置分开,设置成一个独立的Activity。另外需要注意,该模式最好不要应用在跳转逻辑的中间Activity,否则,应用的跳转会出现问题。

3,使用正常模式以外模式的原因:节约内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值