android Intent onNewIntent 什么时候调用
1.activity A 的lanch model 为singleTop
此刻,A在activity 栈顶,那么就会调用A 的onNewIntent
如果A不在栈顶,则不会调用。
2.activity A 的lanch model 为 singTask
如果task 里面已经有activity a 的实例,再次启动A就会调用onNewTask
3.如果activity A 的lanch model 为singleInstance
启动过activity A ,有activity A 的实例,那么就会调用onNewIntent
4.如果activity A 的启动模式为standard
启动activity的时候,
1).我增加了FLAG_ACTIVITY_CLEAR_TOP 和FLAG_ACTIVITY_SINGLE_TOP,那么如果有曾经启动过A,则会调用onNewIntent
Intent intent = new Intent(SecondActivity.this,MainActivity.class);intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
2)如果此时A在activity栈顶,那么只需要加FLAG_ACTIVITY_SINGLE_TOP 就可以让A执行onNewIntent
参考:https://www.cnblogs.com/zawn/archive/2012/10/23/2735875.html
Activity 的 onNewIntent方法的调用可总结如下:
在该Activity的实例已经存在于Task和Back stack中(或者通俗的说可以通过按返回键返回到该Activity )时,当使用intent来再次启动该Activity的时候,如果此次启动不创建该Activity的新实例,则系统会调用原有实例的onNewIntent()方法来处理此intent.
且在下面情况下系统不会创建该Activity的新实例:
1,如果该Activity在Manifest中的android:launchMode定义为singleTask或者singleInstance.
2,如果该Activity在Manifest中的android:launchMode定义为singleTop且该实例位于Back stack的栈顶.
3,如果该Activity在Manifest中的android:launchMode定义为singleTop,且上述intent包含Intent.FLAG_ACTIVITY_CLEAR_TOP标志.
4,如果上述intent中包含 Intent.FLAG_ACTIVITY_CLEAR_TOP 标志和且包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志.
5,如果上述intent中包含 Intent.FLAG_ACTIVITY_SINGLE_TOP 标志且该实例位于Back stack的栈顶.
上述情况满足其一,则系统将不会创建该Activity的新实例.
根据现有实例所处的状态不同onNewIntent()方法的调用时机也不同,总的说如果系统调用onNewIntent()方法则系统会在onResume()方法执行之前调用它.这也是官方API为什么只说”you can count on onResume() being called after this method”,而不具体说明调用时机的原因.
注意:微博分享的实现方式就是通过增加flag 调用你的activity 的onNewIntent.当时我还想不通,为什么,我的activity 不是sigleTop 的也可以调用到onNewIntent上来。原来是动态加了flag,如果你已经有了实例,比如加flag:FLAG_ACTIVITY_SINGLE_TOP,系统就会去检查,如果已经有实例,那么就调用你的onNewIntent.
android Intent onNewIntent 什么时候调用相关推荐
- Android Intent常用方法详细介绍,显示Intent,隐式Intent,调用浏览器,拨号,发短信,传递数据
Intent介绍 Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据.Intent一般用于启动活动,启动服务以及发 ...
- android intent调用,Android Intent调用 Uri的方法总结
Android Intent调用 Uri的方法总结 //调用浏览器 Uri uri = Uri.parse(""); Intent it = new Intent(Intent.A ...
- 关于Activity onNewIntent方法的调用时机
在官方API上的说明如下: http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.c ...
- Android Intent基本使用
Android Intent基本使用 Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供 ...
- Android Intent机制详解
什么是Intent Intent 是一个将要执行的动作的抽象描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯.比如说调用startActivity()来启动一 ...
- Android Intent Flag实现singleTask模式
Android Intent Flag Android Intent 常用的Flag有以下几种: FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG ...
- android不调用系统发送短信,android之两种方式调用短信发送接口
释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...
- Android Intent的几种用法全面总结
Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...
- Android -- Intent
Intent Android ...
最新文章
- NO.72 参与项目管理、演示和总结
- Linux - Sudo命令
- python每天定时9点执行_python 定时器每天就执行一次的实现代码
- jsp进阶教程和Servlet
- 1.4_12 Axure RP 9 for mac 高保真原型图 - 案例11 【动态面板-滚动条1】
- 网络工程师 第8章 网络安全
- 小米6无线显示无法连接服务器,小米手机:无法连接WiFi怎么解决?
- 大衣哥家的小伟和亚楠还能走多久?
- Python CT图像预处理——nii格式读取、重采样、窗宽窗位设置
- 程序员必知的 89 个操作系统核心概念
- 杠杆股票平仓后该如何处理?
- PHPMyWind后台登录密码忘记的解决办法
- 2022年最火副业;海外抖音 (TikTok) 搬运视频,一周赚一个月工资。
- 孙陶然:不要轻易开始创业
- 7300 LE显卡只能使用VGA模式
- 使用selenium模拟动态登录QQ邮箱爬取收件箱内容放在CSV文件中
- 真正开源的商城源码推荐
- Metal每日分享,均值模糊滤镜效果
- Python 网络爬虫2:第三方库requests 渗透脚本的编写(SQL注入的EXP,主机发现、端口扫描)
- 时标网络图怎么画?一篇文章两个方法轻松上手
热门文章
- php前面有人排队,PHP实现打印类(实现队列排队打印)
- mysql xplugin_mysql 5.7.12 新增 X plugin 详解
- serverless mysql_Serverless 解惑——函数计算如何访问 MySQL 数据库
- 简述用决策表设计测试用例的步骤_决策表快速入门
- 鲸鱼优化算法_Java 代码优化细节之比比谁更细
- CStopwatch详细用法
- BT5下用ncrack破解3389
- IT精英们!一路走好!
- MyBatis实现与插件开发
- day 05 python基础