我已经在清单文件中定义了启动模式,以便在backstack上只保留一个活动,但遗憾的是,它不能解决返回导航问题。也就是说,用户必须反复单击返回导航按钮才能退出应用程序。这是我的清单配置。
<?xml version="1.0" encoding="utf-8"?>
<application
android:allowBackup="true"
android:icon="@drawable/ic_action_launcher"
android:label="@string/app_name"
android:roundIcon="@drawable/ic_action_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:launchMode="singleTop"/>
<activity android:name=".DataViewActivity"
android:launchMode="singleTop"/>
<activity android:name=".FormsViewActivity"
android:launchMode="singleTop"/>
<activity android:name=".ProfileViewActivity"
android:launchMode="singleTop"/>
<activity android:name=".NotificationsActivity"
android:launchMode="singleTop"/>
<activity android:name=".NotificationViewActivity"
android:launchMode="singleTop"/>
<activity android:name=".LoginActivity"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".InitialSetupActivity"
android:launchMode="singleTop">
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
提前致谢
答案 0 :(得分:1)
使用singleTask
或singleInstance
代替singleTop
在Android文档中:
标准和singleTop
使用&#34;标准&#34;的活动或&#34; singleTop&#34;启动模式可以 实例化多次。实例可以属于任何任务,并且可以位于活动堆栈中的任何位置。通常,它们会启动到调用startActivity()的任务中(除非Intent对象包含FLAG_ACTIVITY_NEW_TASK指令,在这种情况下选择了不同的任务 - 请参阅taskAffinity属性)
singleTask和singleInstance
相比之下,&#34; singleTask&#34;和&#34; singleInstance&#34;活动只能 开始一项任务。它们始终位于活动堆栈的根部。 此外,该设备只能在a处保存一个活动实例 时间 - 只有一个这样的任务。
来源:https://developer.android.com/guide/topics/manifest/activity-element.html