Nou*_*tti 8 android single-instance android-manifest android-intent android-activity
可能重复的深层链接和多个应用程序实例。我已经在我的应用中实现了深度链接。我有 Splash 活动是启动器和 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>
Run Code Online (Sandbox Code Playgroud)
我已经设置启动模式 singleTask 来处理 onNewIntent()。现在我想要实现的是,如果用户从 DeepLinking 打开活动并且 MainActivity 中已经有一些任务在进行,我会提示用户一个对话框,要么他想取消当前任务并开始新任务(来自深度链接)。问题是如果我从 MainActivity 打开另一个活动并且用户来自 DeepLinking Intent。然后它会杀死第二个活动并直接打开 MainActivity。我想要实现的是,如果应用程序/活动未运行,则来自 DeepLink 的 Intent 按原样打开。如果活动/应用程序已经在运行,那么我会提示用户关闭当前任务并执行 DeepLink 任务/意图。
这实际上并不像您想象的那样工作。您正在尝试使用launchMode="singleTask",但由于您还没有设置“taskAffinity”,Android 几乎会忽略您的launchMode.
您不需要使用特殊启动模式“singleTask”或“singleInstance”来获得您想要的。
尝试使用singleTop启动模式,看看这是否可以解决您的问题。如果ActivityMain已经打开并且您ActivityMain使用深层链接再次启动,onNewIntent()则应在 中调用ActivityMain。
您还可以查看我对这个问题的回答,它描述了一种Activity根据使用static变量来决定另一个变量是否Activity在堆栈中来确定显示内容的方法。
| 归档时间: |
|
| 查看次数: |
6126 次 |
| 最近记录: |