关于Activity onNewIntent方法的调用时机
在官方API上的说明如下:
http://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent):
protected void onNewIntent (Intent intent)
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中的
,且上述intent包含Intent.android:launchMode定义
为singleTop
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方法的调用时机相关推荐
- IOS-layoutSubviews方法的调用时机
IOS-layoutSubviews方法的调用时机 前言 layoutSubviews调用时机 setNeedsLayout 和 layoutIfNeeded addSubview 改变view的si ...
- Activity生命周期和调用时机
onCreate 表示Activity正在被创建,这是Activity 生命周期执行的第一个方法.可以做一些初始化的工作. 比如:加载布局文件.绑定控件.初始化数据等. 调用时机:Activity创建 ...
- Python面向对象程序设计中对象析构方法的调用时机
开学第一课:一定不要这样问老师Python问题 中国大学MOOC"Python程序设计基础"第6次开课时间 董付国老师Python系列教材推荐与选用参考 ============= ...
- SAP Spartacus UserService.get方法的调用时机
在cart-page-layout-handler.ts: selective-cart.service.ts: 上图48行this.userService.get()返回一个Observable: ...
- android Intent onNewIntent 什么时候调用
1.activity A 的lanch model 为singleTop 此刻,A在activity 栈顶,那么就会调用A 的onNewIntent 如果A不在栈顶,则不会调用. 2.activity ...
- 【转】 onNewIntent调用时机
onNewIntent调用时机 在IntentActivity中重写下列方法:onCreate onStart onRestart onResume onPause onStop onDestro ...
- Android onNewIntent调用时机
1.onNewIntent 首先看一下Activity 的生命周期: 从图中可知,初次启动 Activity 时,调用顺序为:onCreate() -> onStart() -> onRe ...
- Activity生命周期方法的调用顺序project与測试日志
以下为測试activity的方法的运行顺序 project与測试资源地址 androidproject AndroidManifest.xml <? xml version="1. ...
- Android应用开发—setResult()的调用时机
本文转载自setResult()的调用时机,此处做了重新的排版,只是感觉markdown的排版比较好看些,侵删. 今天遇到这样一个问题,我在Activity-A中用startActivityForRe ...
最新文章
- 1073 Scientific Notation
- spring boot启用tomcat ssl
- Codeforces Round #171 (Div. 2)
- python初学工资-Python怎么学,才能薪资翻一翻?
- word List 31
- LeetCode 701. 二叉搜索树中的插入操作(二叉查找树/插入)
- python允许无止境的循环_ParisGabriel:Python无止境 day03
- SpringMVC 全局异常处理的简单应用
- WireShark 查看UDP码流的丢包率
- CSDN VIP文章
- 人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题)
- composition API
- SpringBoot整合MyBatisPlus(十四)
- Traceback (most recent call last):IndexError: list assignment index out of range
- cuda compute capability
- Google浏览器自动翻译失灵
- 浏览器访问127.0.0.1已拒绝连接
- 仿bilibili微信小程序2
- 挖掘长尾关键词的五大思路
- python计算1的平方减2的平方加3的平方减4的平方怎么算_计算1的平方减2的平方加3的平方减4的平方 – 手机爱问...
热门文章
- AR+ 实时音视频通话,×××无缝结合
- 企业 SpringBoot 教程(六)springboot整合mybatis
- 《Linux From Scratch》第三部分:构建LFS系统 第八章:让LFS系统可引导 - 8.2. 创建 /etc/fstab 文件...
- Alphabet股价周五跌5.32%:三年最大单日跌幅
- jspxcms bug表
- 服务器中加速BIOS启动的方法
- Webservice开发流程
- Lanecat网猫的延伸使用
- 5.Xilinx RapidIO核例子工程源码分析
- 机器学习-类别不平衡问题