android四大组件之Activity - (2)onNewIntent()的作用

要说onNewIntent(), 就不得不提到Activity的四种启动模式.分别是:

1, standard, 标准模式 (也是系统默认的模式) 

每次都会新建Activity放置任务栈中.


2, singleTop 模式

这个模式能够确保每次使用的Activity都处于任务栈的栈顶.如果Activity已经处于栈顶则不再创建,否则会创建新的Activity实例并放置在栈顶.


3, singleTask 模式 - 常用的模式

如果当前栈中已经有该Activity ( 即使并不处于栈顶 ),则将该Activity之上的其他实例移除, 使它能处于栈顶.否则直接创建新的实例并放于栈顶.


4, singleInstance - 比较少用到

这个模式下会新建栈专门放Activity,使其他应用能够共享并访问该Activity.其他任何应用只要需要访问该Activity的实例都会进到该栈使用该Activity.


综合上面简述,singleTask是比较常用的模式, 因为它保证了栈中始终只有一个所访问的Activity实例,并且比较少存在其他没访问到的Activity.所以即使我们即使不是连续的多次访问某个Activity,也能保证它始终唯一.


而onNewIntent(Intent  intent)方法就是提供给singleTask 模式这种特定实现的有效保持intent上下文的方法. 比如Activity A,首次访问A,并不会执行方法onNewIntent(), 而当用户退出A, 假如系统内存足够,没有在用户退出A之后Kill 掉A,而是短暂的继续保存A. 过了一小段时间,用户又打开A了, 这个时候A就会这么走: onNewIntent()---->onResart()------>onStart()----->onResume().  当然,如果A已经被系统回收了, 用户再打开A的时候 A就会从onCreate() 走正常的生命周期了.


要注意的是, 使用onNewIntent()时, 方法体内要使用setIntent( Intent intent )将系统的intent重新给予A, 不然后面调用getIntent() 可能为空.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值