我的应用程序有两个活动。
应用的根活动是MainActivity。如果凭据缺失或无效,则用户将在完成MainActivity时重定向到LoginActivity。
如果将主活动的启动模式设置为singleTask,并且我在LoginActivity的内部片段中=>最小化应用程序=>从启动器图标启动应用程序=>MainActivity启动(因为它是singleTask活动)并重定向到LoginActivity,但当然是堆栈中的第一个片段。
所需的行为(在从最近重新启动时发生的情况)是保留当前活动的实例并在LoginActivity的堆栈中显示正确的片段。
这当然可以通过将启动模式设置为singleTop来轻松解决,但随之而来的是不同的问题!深度链接麻烦!
如果我的应用程序在后台打开,并且我在singleTop模式下从浏览器或电子邮件中单击链接-应用程序将作为转发应用程序的子任务打开(如果单击最近,则会看到应用程序打开两次-一次作为先前存在的常规实例,以及一次包含在浏览器/电子邮件中)。 当然,这非常不方便,可以通过-你知道的-将启动模式设置为singleTask来解决!
非常感谢您对此问题的帮助。
如果将主活动的启动模式设置为singleTask,并且我在LoginActivity的内部片段中=>最小化应用程序=>从启动器图标启动应用程序=>MainActivity启动(因为它是singleTask活动)并重定向到LoginActivity,但当然是堆栈中的第一个片段。
所需的行为(在从最近重新启动时发生的情况)是保留当前活动的实例并在LoginActivity的堆栈中显示正确的片段。
这当然可以通过将启动模式设置为singleTop来轻松解决,但随之而来的是不同的问题!深度链接麻烦!
如果我的应用程序在后台打开,并且我在singleTop模式下从浏览器或电子邮件中单击链接-应用程序将作为转发应用程序的子任务打开(如果单击最近,则会看到应用程序打开两次-一次作为先前存在的常规实例,以及一次包含在浏览器/电子邮件中)。 当然,这非常不方便,可以通过-你知道的-将启动模式设置为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" />