FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS排除整个应用程序,而不仅仅是活动

时间:2011-10-13 19:40:17

标签: android

我有一个启动活动的通知。在长按主页按钮并选择我的应用程序后,我想再次启动我的主要活动,而不是通知启动此活动。我尝试使用FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,但是从最近的时候删除了我的整个应用程序,这不是我想要实现的。我怎么能在最近的时候拥有我的应用程序,但主要的活动是否已开始?

此致

2 个答案:

答案 0 :(得分:12)

好的,我找到了解决问题的方法。我使用FLAG_ACTIVITY_NEW_TASK启动了通知活动。但在我看来,如果亲和力与默认亲和力不同,则此活动仅在自己的任务中启动。所以我不得不在清单中添加不同的亲和力。

似乎FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS没有(如文档所述)从最近的活动中删除活动,而是排除活动从最近开始的整个任务(不是整个应用程序)。由于我没有设置不同的亲和力,我想要排除的Activity在同一个任务中启动(虽然我设置了FLAG_ACTIVITY_NEW_TASK)所以我的整个应用程序(因为它只在一个任务中运行)是被排除在最新状态之外。

现在我为从通知启动的Activity设置了不同的亲和力,我用FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS启动它。当我离开此活动并长按HOME按钮时,我可以选择我的应用程序并启动默认任务或将其带到前面。

如果我上面提到的错了,请随意清理它......

答案 1 :(得分:1)

我不清楚你想要什么。

  

“我如何在最新版本中使用我的应用程序,但拥有主要活动   开始?“

如果您希望始终使用长按主页启动一项活动,则可以在清单中将您的活动定义为singleTask

这样,当您在长按HOME中选择快捷方式时,它将始终显示MAIN,singleTask活动。我这样说是因为我曾经使用过这种行为。 ; - )

我相信通过使用此功能,您仍然可以正常使用通知启动活动,例如Intent s。

在活动代码中:

        android:launchMode="singleTask"
        >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>