您的位置:首页 > 移动开发 > Android开发

AndroidのActivity启动模式

2016-04-19 17:21 537 查看
Activity启动模式

.概念

Activity启动模式定义了Activity启动的规则,它决定着Activity的实例创建与重用与否

.属性

Activity的启动模式在menifest.xml中的<activity>标签中设置,属性为launchMode

.分类

Activity的启动模式分为四类: standard 、 singleTop 、 singleTask 、 singleInstance

.备注

Android采用Task来管理不同的Activity。当启动一个Activity时,系统会先创建一个Task, 然后再启动这 个Activity的入口。我们可以把Task理解为 栈。

.Standard(标准模式)

设置:系统默认的模式,可不设置
特点:每次创建Activity,都会新建一个Activity对象,并置顶
示例:从Activity A跳转到Activity B,再跳转到ActicityA,则栈为: A -> B -> A

.SingleTop(栈顶单例模式)

设置:launchMode = "singleTop"
特点:检查栈顶元素是否为当前Activity,如果是,则复用;如果不是,则新建Activity,置顶
示例:当前栈为: A -> B -> C,当前栈顶为C,如果跳转到C,则复用C,栈为: A -> B -> C

.SingleTask (全栈单例模式)

设置:launchMode = "singleTask"
特点:检查全栈元素是否有当前Activity,如果有,则使在该Activity之上的Activity出栈,使其置顶
示例:当前栈为: A -> B -> C -> D,如果跳转到B,则C、D出栈,栈为: A -> B

.SingleInstance(系统单例模式)

设置:launchMode = "singleInstance"
特点:系统范围检查是否存在该Activity,如果存在,则复用

从上述总结

相同点:目标Activity均须置顶

不同点: Standard 每次都新建Activity实例

SingleTop/SingleTask则先检查是否存在该Activity,存在则复用

SingleTop由于栈顶操作,不须置顶;SingleTask须出栈置顶

SingleTop/SingleTask都是实现栈内单例

SingleInstance则是实现系统单例

SingleTask/SingleTop模式,均会调用onNewIntent()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: