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

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

2015-03-05 19:42 351 查看
要说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() 可能为空.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐