activity启动模式

activity 启动模式4种,最容易混淆的是 singleTop 和 singleTask以及singleInstance

最常用的是 standard 标准模式, 默认就是它.不需要手动配置. 每次启动都会创建一个新的activity实例.


简单说: singleTop 就是,假如 A -->activity位于栈顶了 , 再次启动A,并不会重新创建 A的对象 ,而是直接 复用它

singleTask 和 singleInstance 共同点

1>一旦入栈,都位于栈底.

2>全栈有且只有一个activity实例对象.


不同点:

singleTask 的activity首次调用时会新打开一个task, 以后 singleTask 的activity 再次入栈时, 则会销毁 该activity之上的 所有activity实例

singleInstance 比较特殊,会单独开启一个栈, 把当前activity放进去,并且该栈只能保存这一个activity实例.


singleTop 应用场景:

比如一个支付例子:中间可能要跳N个页面,而按下返回键应该返回到支付流程开始之前的那个activity, 此时就可以用singleTop

还能解决一个问题: 面试常见 , 怎么防止重复提交.  比如注册时 快速点击注册按钮2次,如果用系统默认启动模式,就会打开2个注册页面. 此时可以设置注册页面为singleTop

当然防止重复提交不止这一种方式.并且这种方式并不推荐(或者最好不要用因为防止重复提交的地方多了去了,都是singleTop那肯定不行), 只是举例说明一下. 实际做法是在程序中计算2次点击间隔比较常用. 可以写一个工具类.

还有一种常见,通知栏的推送信息,点击启动的activity 可设置为 singleTop


singleTask 应用场景:

可以把工程中的 MainActivity设置为这种模式, 因为它一般是工程的主Activity, 比如双击退出在这里,退出时 保重其他activity已经出栈.


singleInstance使用场景很少,目前还没用到过.


参考:http://www.tuicool.com/articles/2qiAF3A



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值