【问题标题】:How we can use onNewIntent() in any Activity?我们如何在任何 Activity 中使用 onNewIntent()?
【发布时间】:2019-12-20 21:57:31
【问题描述】:

onNewIntent()在Activity生命周期中的真正用途是什么?我们如何使用这个方法?

【问题讨论】:

    标签: android


    【解决方案1】:

    如果 Activity 在其包中将 launchMode 设置为“singleTop”,或者客户端在调用 startActivity(Intent) 时使用了 FLAG_ACTIVITY_SINGLE_TOP 标志,则会调用此方法。

    如果您设置为单顶,如果 Activity 已经在历史堆栈的顶部运行,则不会启动它。它不会重新启动,只是从堆栈中显示。

    【讨论】:

    • 显然,如果使用FLAG_ACTIVITY_REORDER_TO_FRONT(在我的代码中这样做),也会调用它。不知道为什么the official docs不提
    • 不仅适用于 singleTop 启动模式,而且适用于任何时候从一个新 Intent 启动一个 令人兴奋的 Activity 实例。例如,它也可以在使用FLAG_ACTIVITY_CLEAR_TOP 或“singleTask”或“singleInstance”启动模式时调用。
    • @RobCo 是正确的。唯一需要注意的是他的意思是“存在”,而不是“令人兴奋”
    • 单任务怎么样?
    【解决方案2】:

    查看此链接onNewIntent()

    在 manifest.xml 中,在一个活动标签集 launchmode="singleTask"

    【讨论】:

    • 非常好的链接。它解释了 onCreate 和 onNewIntent 如何协同工作
    • 该链接解释了一切。它比 Android 自己的文档要好得多。
    【解决方案3】:

    以上答案不完整。

    如果应用程序“A1”的活动“a1”具有启动模式“singleTask”或“singleTop”并且已经处于活动状态(在任务 t1 中)但已暂停,现在是另一个任务(例如任务 t2)(通常是另一个 android app) 向应用程序 A1 的活动 a1 发送一个意图,然后,android 不会在任务 t2 中创建另一个活动实例,而是通过向 a1 中的 onNewIntent(intent) 方法发出回调来从任务 t1 恢复 a1。

    Tasks and back stack 是一个重要的概念,没有博客比android 文档本身解释得更好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 2015-07-14
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-13
      相关资源
      最近更新 更多