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.

最新文章

  1. php中判断字符串是否全是中文或含有中文的实现代码
  2. error: L6235E: More than one section matches selector - cannot all be FIRST/LAST
  3. [知识点]平衡树之Splay
  4. openVPN报错:All TAP-Windows adapters on this system are currently in use
  5. Leetcode: UTF-8 Validation
  6. boost库学习之regex
  7. ABBYY FineReader 12最新官方版下载
  8. DevSecOps简介(二)
  9. 无聊拿socket写的100以内的加法考试。。。
  10. MatLab计算图像圆度
  11. Python学习笔记9-Python 链接MySql数据库
  12. zepto.js 学习之(一)
  13. [转]解析多级json数据为list中嵌套一级字典的形式
  14. 一个小实例理解js 原型和继承
  15. 怎样以快速样式的方式在word文档中生成以下多级自动编号
  16. 实验八 Web基础 SQL注入原理
  17. P4705 玩游戏
  18. Idea运行web项目时,提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方法
  19. socket通讯---TcpClient
  20. javax.servlet-api 和 servlet-api 区别

热门文章

  1. Struts2_动态结果集
  2. Linux目录与文件的权限意义
  3. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]
  4. HCNA配置telnet远程管理
  5. php程序员发展建议
  6. *389. Find the Difference (string + map(26)) read problems carefully
  7. JAVA对list集合进行排序Collections.sort()
  8. 【BZOJ3506】[CQOI2014] 排序机械臂(Splay)
  9. Poj(2236),简单并查集
  10. C# break语句