gpt4 book ai didi

android - 通过方案 URL 启动时我的 Android Activity 的多个实例

转载 作者:行者123 更新时间:2023-11-30 02:21:52 26 4
gpt4 key购买 nike

当我通过 URL 启动我的应用程序时,我看到了我的启动器 Activity 的第二个实例。我试过使用 singleInstance 作为 launchMode,这确实会阻止创建另一个实例,但它也有一些令人讨厌的副作用。

一个副作用是:

  1. 通过图标启动我的应用
  2. 从主菜单打开另一个 Activity 。
  3. 点击主页按钮。
  4. 通过图标再次启动我的应用
  5. 再次显示主菜单,而不是我之前查看的 Activity 。

我在查看 Android 文档中的启动模式时知道这种预期行为。

我的问题是,是否有任何其他方法可以在不使用 singleInstance 启动模式的情况下阻止我的 Activity 的单个实例?

如果我必须使用 singleInstance,我如何在重新启动应用程序时保留 Activity backstack?

下面是我的 list 的一部分,显示了没有

的主菜单 Activity
<activity android:name="com.me.myapp.MainMenuActivity" android:label="@string/app_name" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
<data
android:host="mydomain.com" android:scheme="http" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>

我已经尝试将 isTaskRoot 添加到 MainMenuActivity,但是当我可以清楚地看到另一个正在运行的 Activity 实例时,这总是返回 true。

经过一些尝试,我注意到:

  1. 如果我使用单一方法启动我的应用程序,即我看不到第二个实例。单击 URL 或使用启动器图标。
  2. 当我使用/混合使用这两种方法启动我的应用程序时,我只看到第二个实例出现。

这表明通过 URL 和点击图标的启动方法是不同的。当我的 Activity 的一个实例已经在运行并启动一个新的实例时,将调用 onCreate。这会创建一个新 Activity - 我希望改为调用 onNewIntent。

最佳答案

我尝试使用 singleTask但我仍然看到我的应用程序的两个实例。

然后我偶然发现了一篇博文 Android singleTask LaunchMode .它说 singleTask Activity 不能有<intent-filter> .

所以我实现了一个启动器 Activity ,现在我的应用程序运行正常。

关于android - 通过方案 URL 启动时我的 Android Activity 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383434/

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