代码之家  ›  专栏  ›  技术社区  ›  Fat Monk

在android生命周期中,我应该在哪里使用getintent()

  •  0
  • Fat Monk  · 技术社区  · 6 年前

    我的应用程序中有一个错误,我以为我知道如何解决,但现在我已经考虑了更多的事情,我不确定我是否知道修复方法。

    我的应用程序从正在调用的第三方应用程序接收到作为字符串的传入意图。该字符串可以作为 SEND 意图或 VIEW 意图。

    所有这些都很好,除非应用程序已经在运行…

    这就是正在发生的事情:

    1. 我的应用未运行(未在“正在运行的应用”视图中列出)
    2. 在另一个(第三方)应用程序中单击“共享”,然后选择“我的应用程序”接收共享文本(文本1)。
    3. 我的应用程序打开,文本按预期显示(和处理)。
    4. 用户切换回第三方应用程序并共享一些不同的文本(text2),然后选择“我的应用程序”接收此新文本。
    5. 我的应用程序打开,但仍显示原始文本(text1)。

    在这一点上,我认为bug是因为我正在阅读 onCreate() 然后显示和处理它。我的想法是应用程序已经在运行了 创建() 当我们跳转到 onResume() .

    但是,如果我继续进行以下测试:

    1. 在不退出我的应用程序的情况下,用户会切换回第三方应用程序,并再次与我的应用程序共享相同的第二条文本(text2)。
    2. 再次显示我的应用程序,但这次正确显示和处理第二个文本。

    怎么可能呢,因为应用程序还在运行,当然 创建() 还是不会被叫来!

    我以为解决办法就是 getIntent() 召集 恢复() (或) onStart() ?)但现在我不确定。这样做对吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   codeFood    6 年前

    问题的核心是 Activity 当第二个 Intent 正在被解雇。

    发射模式在这里很重要。

    你能做的是,将launchmode设置为 singleTop ,然后进入目的 onNewIntent() 方法。

    这是处理这种情况的好方法。请阅读上面的链接,它将使事情非常清楚。