在官方API上的说明如下:

http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent):

protected void onNewIntent (Intent intent)

Since:API Level 1

This is called for activities that set launchMode to "singleTop" in their package, or if a client used the FLAG_ACTIVITY_SINGLE_TOP flag when callingstartActivity(Intent). In either case, when the activity is re-launched while at the top of the activity stack instead of a new instance of the activity being started, onNewIntent() will be called on the existing instance with the Intent that was used to re-launch it.

An activity will always be paused before receiving a new intent, so you can count on onResume() being called after this method.

Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent.

Parameters
intent The new intent that was started for the activity.
See Also
  • getIntent()
  • setIntent(Intent)
  • onResume()

  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",而不具体说明调用时机的原因.

  下面是不同状态下调用onNewIntent() 的日志以供参考:

  1,如果实例已经被系统kill掉:    

10-23 14:03:21.623: D/MainActivity(25990): onCreate
10-23 14:03:21.743: D/MainActivity(25990): onStart
10-23 14:03:21.743: D/MainActivity(25990): onRestoreInstanceState
10-23 14:03:21.743: D/MainActivity(25990): onNewIntent
10-23 14:03:21.753: D/MainActivity(25990): onResume

  2,如果实例已被stop:

10-23 12:08:32.063: D/MainActivity(15188): onNewIntent
10-23 12:08:32.063: D/MainActivity(15188): onRestart
10-23 12:08:32.063: D/MainActivity(15188): onStart
10-23 12:08:32.063: D/MainActivity(15188): onResume

  3,如果实例已被pause:

10-23 13:47:08.393: D/MainActivity(25672): onNewIntent
10-23 13:47:08.393: D/MainActivity(25672): onResume

  第2,3可以总结为如果实例没有被Kill则会首先执行onNewIntent方法,然后再执行生命周期的其他方法.

  

关于Activity onNewIntent方法的调用时机相关推荐

  1. IOS-layoutSubviews方法的调用时机

    IOS-layoutSubviews方法的调用时机 前言 layoutSubviews调用时机 setNeedsLayout 和 layoutIfNeeded addSubview 改变view的si ...

  2. Activity生命周期和调用时机

    onCreate 表示Activity正在被创建,这是Activity 生命周期执行的第一个方法.可以做一些初始化的工作. 比如:加载布局文件.绑定控件.初始化数据等. 调用时机:Activity创建 ...

  3. Python面向对象程序设计中对象析构方法的调用时机

    开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...

  4. SAP Spartacus UserService.get方法的调用时机

    在cart-page-layout-handler.ts: selective-cart.service.ts: 上图48行this.userService.get()返回一个Observable: ...

  5. android Intent onNewIntent 什么时候调用

    1.activity A 的lanch model 为singleTop 此刻,A在activity 栈顶,那么就会调用A 的onNewIntent 如果A不在栈顶,则不会调用. 2.activity ...

  6. 【转】 onNewIntent调用时机

    onNewIntent调用时机 在IntentActivity中重写下列方法:onCreate onStart onRestart  onResume  onPause onStop onDestro ...

  7. Android onNewIntent调用时机

    1.onNewIntent 首先看一下Activity 的生命周期: 从图中可知,初次启动 Activity 时,调用顺序为:onCreate() -> onStart() -> onRe ...

  8. Activity生命周期方法的调用顺序project与測试日志

    以下为測试activity的方法的运行顺序   project与測试资源地址 androidproject AndroidManifest.xml <? xml version="1. ...

  9. Android应用开发—setResult()的调用时机

    本文转载自setResult()的调用时机,此处做了重新的排版,只是感觉markdown的排版比较好看些,侵删. 今天遇到这样一个问题,我在Activity-A中用startActivityForRe ...

最新文章

  1. 1073 Scientific Notation
  2. spring boot启用tomcat ssl
  3. Codeforces Round #171 (Div. 2)
  4. python初学工资-Python怎么学,才能薪资翻一翻?
  5. word List 31
  6. LeetCode 701. 二叉搜索树中的插入操作(二叉查找树/插入)
  7. python允许无止境的循环_ParisGabriel:Python无止境 day03
  8. SpringMVC 全局异常处理的简单应用
  9. WireShark 查看UDP码流的丢包率
  10. CSDN VIP文章
  11. 人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题)
  12. composition API
  13. SpringBoot整合MyBatisPlus(十四)
  14. Traceback (most recent call last):IndexError: list assignment index out of range
  15. cuda compute capability
  16. Google浏览器自动翻译失灵
  17. 浏览器访问127.0.0.1已拒绝连接
  18. 仿bilibili微信小程序2
  19. 挖掘长尾关键词的五大思路
  20. python计算1的平方减2的平方加3的平方减4的平方怎么算_计算1的平方减2的平方加3的平方减4的平方 – 手机爱问...

热门文章

  1. AR+ 实时音视频通话,×××无缝结合
  2. 企业 SpringBoot 教程(六)springboot整合mybatis
  3. 《Linux From Scratch》第三部分:构建LFS系统 第八章:让LFS系统可引导 - 8.2. 创建 /etc/fstab 文件...
  4. Alphabet股价周五跌5.32%:三年最大单日跌幅
  5. jspxcms bug表
  6. 服务器中加速BIOS启动的方法
  7. Webservice开发流程
  8. Lanecat网猫的延伸使用
  9. 5.Xilinx RapidIO核例子工程源码分析
  10. 机器学习-类别不平衡问题