如何让第二个启动程序始终在指定的活动中打开应用程序

时间:2011-07-05 08:09:57

标签: android android-activity manifest launchmode

在我的应用程序中,我已使用此清单条目指定了可从启动程序启动的第二个活动:

    <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>

假设我在“主要”活动中打开应用程序,然后按主页键。我的应用程序仍在运行,但在后台运行。

稍后用户从主屏幕中选择“ListsOfListsActivity”的启动器图标。

这会将应用程序带到前台,但不会出现在“ListOfListsActivity”中,而是当它进入后台时的当前活动(例如“主”活动)。

这令人困惑,因为用户选择了“ListOfListsActivity”,但是显示了另一个。然后他们必须导航到它。

我通过为“ListOfListsActivity”指定launchMode =“singleTask”来更好地工作,但在该模式下,它无法从另一个活动中为结果启动(startActivityForResult()),我需要能够做到那要选一个清单......

问题: - 如何指定一个intent-filter,它将强制活动到前台并成为所选活动,无论应用程序的当前状态及其当前活动是什么?

1 个答案:

答案 0 :(得分:0)

我的最终实现是为我想独立于启动器启动的每个活动定义一个不同的taskAfinity字符串。

这样,每个“快捷方式”总是启动我想要的活动,但是我无法避免的缺点是用户可能有多个任务,其中包含我的应用程序中的活动,也许是相同的活动在不同的任务中开放/主动......