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 什么时候调用相关推荐

  1. Android Intent常用方法详细介绍,显示Intent,隐式Intent,调用浏览器,拨号,发短信,传递数据

    Intent介绍 Intent是Android程序中各个组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据.Intent一般用于启动活动,启动服务以及发 ...

  2. android intent调用,Android Intent调用 Uri的方法总结

    Android Intent调用 Uri的方法总结 //调用浏览器 Uri uri = Uri.parse(""); Intent it = new Intent(Intent.A ...

  3. 关于Activity onNewIntent方法的调用时机

    在官方API上的说明如下: http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.c ...

  4. Android Intent基本使用

    Android Intent基本使用 Intent组件虽然不是四大组件,但却是连接四大组件的桥梁,学习好这个知识,也非常的重要. 一.什么是Intent 1.Intent的概念: Android中提供 ...

  5. Android Intent机制详解

    什么是Intent  Intent 是一个将要执行的动作的抽象描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯.比如说调用startActivity()来启动一 ...

  6. Android Intent Flag实现singleTask模式

    Android Intent Flag Android Intent 常用的Flag有以下几种: FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG ...

  7. android不调用系统发送短信,android之两种方式调用短信发送接口

    释放双眼,带上耳机,听听看~! 相信很多程序员在开发程序的时候都会遇到短信调用端口的情况,今天是技术狗小编为大家带来的关于android之两种方式调用短信发送接口,希望对你学习这方面知识有帮助! an ...

  8. Android Intent的几种用法全面总结

    Android Intent的几种用法全面总结 Intent, 用法 Intent应该算是Android中特有的东西.你可以在Intent中指定程序要执行的动作(比如:view,edit,dial), ...

  9. Android -- Intent

    Intent                                                                                       Android ...

最新文章

  1. NO.72 参与项目管理、演示和总结
  2. Linux - Sudo命令
  3. python每天定时9点执行_python 定时器每天就执行一次的实现代码
  4. jsp进阶教程和Servlet
  5. 1.4_12 Axure RP 9 for mac 高保真原型图 - 案例11 【动态面板-滚动条1】
  6. 网络工程师 第8章 网络安全
  7. 小米6无线显示无法连接服务器,小米手机:无法连接WiFi怎么解决?
  8. 大衣哥家的小伟和亚楠还能走多久?
  9. Python CT图像预处理——nii格式读取、重采样、窗宽窗位设置
  10. 程序员必知的 89 个操作系统核心概念
  11. 杠杆股票平仓后该如何处理?
  12. PHPMyWind后台登录密码忘记的解决办法
  13. 2022年最火副业;海外抖音 (TikTok) 搬运视频,一周赚一个月工资。
  14. 孙陶然:不要轻易开始创业
  15. 7300 LE显卡只能使用VGA模式
  16. 使用selenium模拟动态登录QQ邮箱爬取收件箱内容放在CSV文件中
  17. 真正开源的商城源码推荐
  18. Metal每日分享,均值模糊滤镜效果
  19. Python 网络爬虫2:第三方库requests 渗透脚本的编写(SQL注入的EXP,主机发现、端口扫描)
  20. 时标网络图怎么画?一篇文章两个方法轻松上手

热门文章

  1. php前面有人排队,PHP实现打印类(实现队列排队打印)
  2. mysql xplugin_mysql 5.7.12 新增 X plugin 详解
  3. serverless mysql_Serverless 解惑——函数计算如何访问 MySQL 数据库
  4. 简述用决策表设计测试用例的步骤_决策表快速入门
  5. 鲸鱼优化算法_Java 代码优化细节之比比谁更细
  6. CStopwatch详细用法
  7. BT5下用ncrack破解3389
  8. IT精英们!一路走好!
  9. MyBatis实现与插件开发
  10. day 05 python基础