gpt4 book ai didi

Android 深度链接和 singleInstance/singleTask

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:13:48 25 4
gpt4 key购买 nike

可能重复 Deep linking and multiple app instances .我在我的应用程序中实现了深度链接。我有作为启动器的 Splash Activity 和处理 list 中定义的 Intent 的 MainActivity:

<application
android:name=".MyApplication"
android:allowBackup="true"
android:fullBackupContent="true"
android:icon="@drawable/app_logo"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme">

<activity
android:name=".ActivitySplash"
android:configChanges="orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
<!-- Launcher activity -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

<activity
android:name=".ActivityMain"
android:alwaysRetainTaskState="true"
android:configChanges="orientation|screenSize"
android:exported="true"
android:label="@string/app_name"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.mywebsite.com"
android:pathPrefix="/something"
android:scheme="http" />
</intent-filter>
</activity>
<activity
android:name=".ActivitySignIn"
android:configChanges="screenSize|orientation" />
<activity android:name=".ActivitySignUp" />
</application>

我已设置启动模式 singleTask 来处理 onNewIntent()。现在我想要实现的是,如果用户从 DeepLinking 打开 Activity 并且 MainActivity 中已经有一些任务在进行,我会提示用户一个对话框,或者他想取消当前任务并开始新任务(来自深度链接)。问题是如果我从 MainActivity 打开另一个 Activity 并且用户来自 DeepLinking Intent。然后它会杀死第二个 Activity 并直接打开MainActivity。我想要实现的是,如果应用程序/Activity 未运行,则 DeepLink 的 Intent 按原样打开。如果 Activity/应用程序已经在运行,那么我会提示用户关闭当前任务并执行 DeepLink 任务/Intent 。

最佳答案

这并不像您想象的那样有效。您正在尝试使用 launchMode="singleTask",但由于您还没有设置“taskAffinity”,Android 几乎忽略了您的 launchMode

您不需要使用任何一种特殊启动模式“singleTask”或“singleInstance”来获得您想要的。

尝试使用 singleTop 启动模式,看看是否能解决您的问题。如果 ActivityMain 已经打开并且您使用深层链接再次启动 ActivityMain,则应在 ActivityMain onNewIntent().

你也可以看看my answer to this question它描述了一种根据使用 static 变量来确定另一个 Activity 是否在堆栈中来确定显示什么 Activity 的方法。

关于Android 深度链接和 singleInstance/singleTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055022/

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