Guy*_*uyZ 5 android deep-linking launchmode
我的应用有2项活动.应用程序的根活动是MainActivity.如果凭据丢失或无效,则用户将在完成MainActivity时重定向到LoginActivity.
如果我将主活动的启动模式设置为singleTask并且我在LoginActivity的内部片段中=>最小化应用程序 - >从启动器图标启动应用程序=> MainActivity启动(因为它是singleTask活动)并且重定向到LoginActivity,但当然是重定向到堆栈中的第一个片段.
所需行为(从重新启动时发生)是它将保留当前活动的实例并在LoginActivity的堆栈中显示正确的片段.
这当然可以通过将启动模式设置为singleTop轻松解决,但随后会出现另一个问题!DeepLink麻烦!
如果我的应用程序在后台打开,我在单一模式下点击浏览器或电子邮件中的链接 - 该应用程序将作为转发应用程序的子任务打开(如果您点击最近,您将看到您的应用程序打开两次 - 一次作为之前的常规实例和浏览器/电子邮件中的一个实例.这当然非常不方便,可以通过 - 你知道 - 将启动模式设置为singleTask来解决!
对此问题的任何帮助将非常感谢.
<!-- Main Activity -->
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="somehost"
android:scheme="myscheme" />
</intent-filter>
</activity>
<!-- Login Activity -->
<activity
android:name="LoginActivity"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
Run Code Online (Sandbox Code Playgroud)
Guy*_*uyZ 10
好,多亏了orelzion的提示,我设法解决了这个问题:
我确实创建了一个新的DeepLinkActivity,它使用以下标志启动了MainActivity(我将启动模式从"singleTask"改为"singleTop"):
Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK
Run Code Online (Sandbox Code Playgroud)
需要所有标记才能解决在尝试解决问题时出现的一些问题.
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |