gpt4 book ai didi

android - 点击 NFC 标签时创建的新程序实例

转载 作者:行者123 更新时间:2023-11-29 23:27:30 25 4
gpt4 key购买 nike

我的 Android 应用程序在事件“NDEF_DISCOVERED”上使用 Intent 过滤器,如果它包含某个 URL,它就会被打开。它工作正常,但我注意到,如果我将我的应用程序置于后台并点击 NFC 标签,将启动该程序的一个新实例。如果我这样做几次,我就会创建多个应用程序实例。这给我带来了一些问题,所以我想找到一个解决方案,以便只打开一个实例。

旁注:当我的程序处于前台时,我在 onResume 中使用 enableForegroundDispatch() 并在 onPause 中使用 disableForegroundDispatch()。它工作正常。

当我的程序在后台并且当我点击一个 NFC 标签时,系统是否可以检测到该程序已经启动并将其置于前台而不是启动一个新实例?

作为比较,如果我将我的程序置于后台,转到程序列表并单击我的程序,Android 检测到该程序已经打开并在不创建新实例的情况下恢复它(onCreate() of在这种情况下不会调用 MainActivity)。为什么我们对 NFC 事件没有相同的行为,并且有可能有相同的行为吗?

我已阅读此主题 ( Application receiving NFC always pops up new instance in front) 这是同一个问题,但它没有帮助我找到解决方案。

最佳答案

我已经添加了:

android:launchMode="singleTask"

如指示here它确实有效。

如文档所述:(来源 https://developer.android.com/guide/components/activities/tasks-and-back-stack)

"singleTask" :

The system creates a new task and instantiates theactivity at the root of the new task. However, if an instance of theactivity already exists in a separate task, the system routes theintent to the existing instance through a call to its onNewIntent()method, rather than creating a new instance. Only one instance of theactivity can exist at a time.

关于android - 点击 NFC 标签时创建的新程序实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53303803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com