首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在重写onNewIntent时是否有任何理由不调用setIntent?

在重写onNewIntent方法时,如果不调用setIntent,可能会导致以下问题:

  1. 数据丢失:在Android应用程序中,当用户返回到已经存在的Activity时,系统会调用onNewIntent方法,并传递一个新的Intent。如果不调用setIntent方法,则新的Intent将无法被Activity获取,从而导致数据丢失。
  2. 应用程序行为异常:在某些情况下,应用程序可能需要根据不同的Intent来调整其行为。如果不调用setIntent方法,则Activity将无法获取到最新的Intent,从而导致应用程序行为异常。

因此,在重写onNewIntent方法时,建议调用setIntent方法,以确保Activity能够正确地处理新的Intent。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

一个SingleTask与跳转传值引发的血案

大致意思就是说一个Activity B如果跳转到另一个launchMode为SingleTask的Activity A,如果task里面已经Activity A,那么跳转只需要调用它里面的onNewIntent...这句话的大致意思是说,如果你的Task里面已经Activity A实例,且其他其他界面跳转到A不会产生新的A的实例onNewIntent()会被调用,通常这时候这里面的Intent是用来重新启动那个已经存在的...我们的Activity A接收到一个新的Intent的时候,会被pause掉,所以我们调用onNewIntent()的时候,记得之后调用onResume()....由上述表达的意思,我们隐约可以理解,setIntent(Intent)onNewIntent(Intent)里面,那么setIntent方法的参数无疑使用的也是onNewIntent的参数。...A,我们getIntent()前会先执行onNewIntent()方法,在这个方法里,我们将接收到的新的Intent覆盖了第一次启动Activity A用的Intent,这样我们getIntent

1.1K10
  • Activity 跳转详解

    ()方法中,此方法只能在Activity被创建时调用,这里因为 singleTop 启动模式并没有重新创建Activity,我们将7个生命周期回调方法都打上Log,发现当创建新Activity对象的前提下调用...You * can use {@link #setIntent} to update it to this new Intent. */ protected void onNewIntent(Intent...然后是说:当已经有此 Activity 实例存在栈顶,上面两种情况都会导致 onNewIntent() 方法被调用。 下面两个段落是说: 1....Activity 将总是被 paused 之后才去接收一个新的intent,所以你可以等此方法(onNewIntent)被调用完毕 onResume() 方法中去写自己的代码。...*/ 看完解释已经很明白了,我们现在修改重写 onNewIntent(intent) 方法如下: @Override protected void onNewIntent(Intent intent)

    61820

    037android初级篇之Activity的几个重要函数

    该方法View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件。该方法的签名如下所示。...然而,当一个实例存在于一个独立的Task,系统不是去创建一个新的实例,而是调用onNewIntent()路由到其他任务的实例。同一间,只存在一个Activity实例。...当调用onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的...onSaveInstanceState / onRestoreInstanceState调用时机 onSaveInstanceState调用时机:当Activity变得“容易”被系统销毁,onSaveInstanceState...这种可能性哪些?

    73420

    Android中Activity的四种启动模式和onNewIntent()

    用户启动Activity的方式大致两种:一种是桌面点击应用程序的图标,进入应用程序的主界面;另一种是应用程序中,进入一个新的Activity。...因此,不管是从桌面进入应用主界面,还是应用里进入一个新的Activity,最终都会调用Activity$startActivity方法。...3. singleTask 如果在栈中已经该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此它上面的实例将会被移除栈。...Activity供多种方式调用启动的情况,多个调用希望只有一个Activity的实例存在,这就需要Activity的onNewIntent(Intent intent)方法了。...当调用onNewIntent(intent)的时候,需要在onNewIntent() 中使用setIntent(intent)赋值给Activity的Intent.否则,后续的getIntent()都是得到老的

    1.3K61

    Android面试官装逼失败之:关于Activity的启动模式

    简单基本launchmode 本文假定大家对于Activity的Task栈已经初步了解,首先,看一下Activity常见的四种启动模式及大众理解,这也是面试最长问的: standard:标准启动模式...singleTop:单独使用使用这种模式,如果Activity实例位于当前任务栈顶,就重用栈顶实例,而不新建,并回调该实例onNewIntent()方法,否则走新建流程。...singleInstance:这种模式启动的Activity独自占用一个Task任务栈,同一刻系统中只会存在一个实例,已存在的实例被再次启动,只会唤起原实例,并回调onNewIntent()方法。...如果同一个栈中原来 如果没有则新建,不会去另一个栈中寻找。...,就直接回调topActivity的onNewIntent,无论topActivity是不是目标Task中 Intent.FLAG_ACTIVITY_SINGLE_TOP Intent.FLAG_ACTIVITY_SINGLE_TOP

    62420

    Android面试官装逼失败之:Activity的启动模式总结

    就这一个问题,答案就要分好几个场景: Activity的taskAffinity属性的Task栈是否存在 如果存在,要看Activity是否存已经存在于该Task 如果已经存在于该taskAffinity...简单基本launchmode 本文假定大家对于Activity的Task栈已经初步了解,首先,看一下Activity常见的四种启动模式及大众理解,这也是面试最长问的: standard:标准启动模式...singleTop:单独使用使用这种模式,如果Activity实例位于当前任务栈顶,就重用栈顶实例,而不新建,并回调该实例onNewIntent()方法,否则走新建流程。...singleTask:这种模式启动的Activity只会存在相应的Activity的taskAffinit任务栈中,同一刻系统中只会存在一个实例,已存在的实例被再次启动,会重新唤起该实例,并清理当前...singleInstance:这种模式启动的Activity独自占用一个Task任务栈,同一刻系统中只会存在一个实例,已存在的实例被再次启动,只会唤起原实例,并回调onNewIntent()方法。

    1.5K40

    android之如何使用Android的搜索框架

    通过一个简单的搜索按钮或从您的应用程序中调用API,搜索对话框就会显示屏幕的顶部,并会自动显示应用程序图标。 本文将教你如何为你的应用程序提供一个自定义搜索对话框。...可以配置很多的属性,但大部分属性都只是使用搜索建议和语音搜索进行配置,尽管如此,我们建议你一定要配置android:hint,用于提示用户需要输入的信息。...当我们应用程序中的 OtherAcitivity中执行搜索请求,MySearchableActivity将会被加载用于执行搜索并显示搜索结果。...你也要以 onCreate()方法中调用setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL),这样,当用户按下键盘上的按键,将会自动激活搜索框。...如果你要在执行搜索,进行别的操作,可以重写onSearchRequested()方法,如下所示: @Override public boolean onSearchRequested() { //这个方法中干你想干的事

    75930

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    Activity 回调的onNewIntent()中关闭自身即可 若在后面的Activity启动 任务栈底的Activity,就会调用任务栈底Activity的onNewIntent() 具体实现...Activity重写 onNewIntent() // 该方法传入一标志位标识是否要退出App & 关闭自身 @Override protected void onNewIntent(Intent...onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:MainActivity 中设置 重写 onNewIntent...()传入一标识符 // 作用:标识是否要退出App @Override protected void onNewIntent(Intent intent) { super.onNewIntent...特别注意 假设场景:当前 Activity ≠ 当前任务栈最后1个Activity调用上述两个方法会出现什么情况呢?

    1.9K42

    Carson带你学Android:这里涵盖了所有实现 “一键退出 App” 的方法

    启动模式的特点) 通过入口 Activity 回调的onNewIntent()中关闭自身即可 若在后面的Activity启动 任务栈底的Activity,就会调用任务栈底Activity的onNewIntent...Activity重写 onNewIntent() // 该方法传入一标志位标识是否要退出App & 关闭自身 @Override protected void onNewIntent(Intent...onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:MainActivity 中设置 重写 onNewIntent...()传入一标识符 // 作用:标识是否要退出App @Override protected void onNewIntent(Intent intent) { super.onNewIntent...特别注意 假设场景:当前 Activity ≠ 当前任务栈最后1个Activity调用上述两个方法会出现什么情况呢?

    76320

    Android 使用手机NFC的读取NFC标签数据的方法

    一 你需要准备的: 一部nfc的手机,一张nfc标签的卡 二 nfc简介 nfc(近距离无线通讯技术),是由非接触式射频识别(RFID)及互连互通技术整合演变而来,通过单一芯片上集成感应式读卡器、...三 nfc过滤标签的设置 3-1 Manifest添加权限: xml里添加nfc的使用权限 <uses-permission android:name="android.permission.NFC...<em>在</em>Activity的filter里面添加对应需要的权限: ACTION_NDEF_DISCOVERED, <activity ......四 nfc读操作(我们读取NEDF数据,其他公交卡类型的数据可以自行研究) 1 初始化nfc工具,判断<em>是否</em>存在nfc和nfc<em>是否</em>打开 2 感应到nfc标签后,读取解析对应nfc类型的标签数据 3 回传显示...(Intent intent) { super.<em>onNewIntent</em>(intent); Log.i(TAG, "onNewIntent: "); setIntent(intent); if (mNfcAdapter

    6.2K10

    ActivityManagerService--startActivity的流程

    流程图 该流程图为:当Activity目标进程不存在,启动Activity的流程。若进程相同的话,也只是省略了启动进程的步骤。 ?...ActivityStack.resumeTopActivityInnerLocked函数: 判断系统状态是否休眠,如果是则先返回 从Stopping等列表中移除即将启动的Activity 等待所有需要...Pause的Activity执行Pause结束后,再继续 Pause当前显示的Activity 等待所有的Activity都Pause完毕后,判断目标进程是否启动 如果进程启动,则调用scheduleResumeActivity...Activity窗口变得可见,才会将上一个Activity进入Stop。...ActivityRecord.onWindowsVisible 主要是调用ActivityStackSupervisor.scheduleIdleLocked函数,该函数中,会回调Activity的onStop

    1.4K30

    Android小技巧: 这里涵盖了所有实现 “一键退出 App” 的方法

    此时入口 Activity 上层的Activity实例都将自动关闭移除 & 自身被放置栈顶(这是SingleTask启动模式的特点) 若在后面的Activity启动 任务栈底的Activity,就会调用任务栈底...Activity的onNewIntent() 通过入口 Activity 回调的onNewIntent()中关闭自身即可 当需要退出 App启动入口 Activity 将 App的入口 Activity...Activity重写 onNewIntent() // 该方法传入一标志位标识是否要退出App & 关闭自身 @Override protected void onNewIntent(Intent...onNewIntent()) 具体使用(从MainActivity(入口Activity) 跳转到 Activity2 & 一键退出) 步骤1:MainActivity 中设置 重写 onNewIntent...()传入一标识符 // 作用:标识是否要退出App @Override protected void onNewIntent(Intent intent) { super.onNewIntent

    56020

    应用首页Activity的单例实现

    DispacherActivity代码中可以看到,跳转到主Activity,Intent的flag设置 为FLAG_ACTIVITY_NEW_TASK,该flag的相关介绍可以到官网查询,这里主要的作用两个...这里需要注意:startActivityIntent参数可以设置三个属性:action,category,data, 当这三个属性任何一个值变化,都会导致不能恢复任务栈,而是重新创建新的Activity...Activity 的情况下,再次跳转又会恢复任务栈,无法正常进行跳转; 这种情况的解决方式两种: 1.使主Activity具备singleTask的功能,再次跳转清除栈顶Activity再重新创建新的...Activity; 2.判断当前是否需要再次通过主Activity跳转,如果不需要通过主Activity,则直接启动目标Activity 我们知道,Intent跳转可以设置多个Flags,想要清除栈顶...super.onNewIntent(intent); Log.i(TAG, " onNewIntent" + this); setIntent(intent

    2.6K61

    对 FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_SINGLE_TOP 的理解

    1.2 单独 singletop activity 在前台(当前显示的栈的栈顶),创建,它自己 onNewIntent调用 activity 不在前台,创建 1.3 单独 cleartop activity...在前台(当前显示的栈的栈顶),创建,它自己 onNewIntent调用 activity 不在前台 activity 启动它的栈里存在,它上面的 activity 会出栈,它自己 onNewIntent...被调用 activity 启动它的栈里不存在,启动它的栈里创建 二、newtask 加上 newtask flag 后,启动一个 Activity ,如果需要创建,被启动的 Activity 会在它需要的栈中创建...在前台(当前显示的栈的栈顶),创建,它自己 onNewIntent调用 activity 不在前台 activity 需要的栈存在,该栈中创建一个 activity 或将该栈移至前台(它自己...> newtask、cleartop,先走 singletop activity 在前台(当前显示的栈的栈顶),创建,它自己 onNewIntent调用 activity 不在前台 activity

    1K20

    Android仿优酷视频的悬浮窗播放效果

    之前接了需求要让视频播放可以像优酷视频那样悬浮窗里播放,并且悬浮窗和主播放页面之间要实现无缝切换,项目中使用的是自封装的ijkplayer 这个要求就代表不能在悬浮窗中新建视频控件,所以需要在悬浮窗中复用主页面的视频控件...(相对于屏幕左上角的坐标) private int mTouchStartX; private int mTouchStartY; //开始的坐标和结束的坐标(相对于自身控件的坐标...case MotionEvent.ACTION_UP: break; default: break; } //如果是移动事件触发...用hasBind来记录是否调用了悬浮窗 private void startFloatingWindow(){ if (!...onCreate方法,而是调用onNewIntent,所以重写onNewIntent方法,重新进入主界面,悬浮窗消失 @Override protected void onNewIntent(Intent

    2.1K20

    使用ARouter进行Android模块化开发

    模块化的好处 总结现在的模块化,大体以下一些好处: 公用功能,不用重复开发、修改,代码复用性更强; 独立编译运行,提高编译速度,也就提高了开发效率; 更利于团队开发,不同的人可以独立负责不同的模块;...作为依赖库,只能以宿主app启动项目,选择运行模块其他module前都是红色的X,表示无法运行。...当isModule为true,作为单独的模块进行运行,选择其中一个具体的module就可以直接运行。...singletask启动模式的activity,onNewIntent方法中调用ARouter.getInstance().inject(this);得不到参数,查看ARouterbuild过程中生成的代码可以知道它是调用了...activity的getIntent来获取参数的,但是onNewIntent中的intent和在onCreate方法中的intent并不相同,所以需要在onNewIntent方法中调用setIntent

    1.5K30
    领券