在我的应用程序中,我已经指定了第二个活动,可以从启动器启动,使用这个清单条目:
<activity
android:name=".Lists.ListOfListsActivity"
android:icon="@drawable/ic_launcher_lists"
android:launchMode="singleTop"
android:label="@string/lists_activity_name" >
<!-- An Intent filter so that the Lists activity shows in the Launcher -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
假设我在"主"活动处打开应用程序,然后按home键。我的应用程序仍将运行,但在后台。
之后,用户从主屏幕上选择我为"ListsOfListsActivity"设置的启动器图标。
这将把应用程序带到前台,但不是在"ListOfListsActivity",而是在任何它的当前活动是当它去到后台(例如在"主"活动)。
这是令人困惑的,因为用户选择了"ListOfListsActivity",但显示了另一个。然后他们必须导航到它。
我有这个工作得更好,通过指定launchMode ="singleTask"为"ListOfListsActivity",但在这种模式下,它不能从另一个活动的结果启动(startActivityForResult()),我需要能够做到这一点来选择一个列表…
问题:-如何指定一个意图过滤器,将强制一个活动到前台,并被选中的活动,无论什么应用程序的当前状态和它的当前活动?
我最后的实现是为我想要独立于Launcher启动的每个activity定义一个不同的taskaffinity字符串。
这样,每个"快捷方式"总是启动我想要的活动,但我无法避免的缺点是用户可能有多个任务,其中包含我的应用程序中的一个活动,并且可能相同的活动在不同的任务中打开/活动....