Activity.onNewIntent(Intent intent)的触发时机

Activity.onNewIntent(Intent intent)的触发时机和Activity的启动模式有关,所以先简单回顾一下“启动模式”

Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四种启动模式

1.standard

默认启动模式,每次激活Activity时都会创建Activity,并放入任务栈中,永远不会调用onNewIntent(Intent intent)

2.singleTop

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,并调用其onNewIntent(Intent intent),否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例,而不会调用onNewIntent(Intent intent),此时就跟standard模式一样)。

3.singleTask 

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent(Intent intent))。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中(此时不会调用onNewIntent(Intent intent))。

4.singleInstance

在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。

接下来谈Activity.onNewIntent(Intent intent)的触发时机。其实很简单,在Activity栈中存在相应的Activity的实例的情况下,Activity被启动,且根据相应的启动模式不需要新建实例时会触发Activity.onNewIntent(Intent
intent)。

时间: 2025-01-16 13:42:27

Activity.onNewIntent(Intent intent)的触发时机的相关文章

[转]Activity详解 Intent显式跳转和隐式跳转

Activity 生命周期 显式 Intent 调用 1     //创建一个显式的 Intent 对象(方法一:在构造函数中指定) 2      Intent intent = new Intent(Intent_Demo1.this, Intent_Demo1_Result1.class); 3 4      Bundle bundle = new Bundle(); 5      bundle.putString("id", strID); 6      intent.putEx

Activity间用Intent和Bundle传递参数

传递方: //点击btn_sub传递 fieldHeight.getText()和 fieldWeight.getText() private void setListeners()    {     btn_sub.setOnClickListener(calrBMI);     }    private OnClickListener calrBMI = new OnClickListener()    {     public void onClick(View v)     { Inte

Android必备:Activity 活动 和 Intent 意图 的学习整理

看这里:Android必备:Activity 活动 和 Intent 意图 的学习整理 在Android必备:Android UI控件的了解与学习中, 对Android UI做了初步的了解和学习,本篇继续进行Android开发学习的整理.Android应用通常由一个或多个基本组件组成,最常用的就是 Activity,本篇我们就来整理一下Activity活动的相关知识,以及Activity之间相互通信的Intent意图. 首先,我们来简单的介绍一下Activity 活动,如图所示(来自百度百科):

Activity中使用Intent实现页面跳转与参数的传递(转)

新建一个FirstAvtivity.java package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class First

启动activity与使用Intent通信机制解析

我们都知道,一个activity启动另一个activity最简单的方式就是使用startActivity方法: public void startActivity (Intent intent) 但是此处 应避免一个误解,该方法并不是一个类方法,启动activity时并非是针对Activity子类调用该方法, 实际上,我们是将调用请求发给了操作系统的ActivityManager,ActivityManager负责创建Activity实 例并调用onCreate(...)方法. 下面就涉及到Ac

Activity之间使用intent传递大量数据带来问题总结

转载请注明:大飞 http://blog.csdn.net/rflyee/article/details/47441405 Activity之间使用Parcel传递大量数据产生的问题. Activity之间通过intent传递大量数据,导致新Activity无法启动. Activity之间数据传递方式总结參考 这 里. 比較经常使用的是直接利用intent传递,比方使用bundle.例如以下: Intent intent =new Intent(ActivityA.this,ActivityB.

android中传递复杂参数,Activity之间通过Intent使用bundle,fragment之间和Activityty通过setArguments使用bundle

在Android开发中,Activity之间通过Intent使用bundle,fragment之间和Activityty通过setArguments使用bundle,对于一些简单的参数传递比较简单,而且方式也有多种,这个就不介绍了.在这里介绍一下复杂的参数传递,比如传递集合ArrayList,对象ArrayList<Object>. 无论是Activity之间参数传递,还是Fragment之间参数传递,或者是Activity与Fragment之间,都要使用Bundle,方式基本相同.Bundl

自学Android笔记——在activity中使用intent

一.Intent介绍: Intent的中文意思是"意图,意向",在Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用.Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互.因此,可以将Intent理解为不同组件之间通信的"媒介&quo

Activity间用Intent、Bundle、onActivityResult进行传值

其实Activity间的传值就是通过Bundle,intent中也是自动生成了Bundle来传值,里面还有个onActivityResult()方法也可以传送数值. 如果一个Activity是由startActivityForResult启动的,那么这个activity在finish()后就会回调启动它的activity中的onActivityResult()方法. 下面是全部代码: MainActivity.java package com.kale.activity; import andr