【发布时间】:2011-10-17 20:30:16
【问题描述】:
我有一个启动 Activity 的通知。长按主页按钮并选择我的应用程序后,我想再次启动我的主要活动,而不是通知启动的此活动。我尝试使用 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,但这从最近删除了我的整个应用程序,这不是我想要实现的。我怎样才能让我的应用处于最近状态,但主 Activity 已启动?
问候
【问题讨论】:
标签: android
我有一个启动 Activity 的通知。长按主页按钮并选择我的应用程序后,我想再次启动我的主要活动,而不是通知启动的此活动。我尝试使用 FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS,但这从最近删除了我的整个应用程序,这不是我想要实现的。我怎样才能让我的应用处于最近状态,但主 Activity 已启动?
问候
【问题讨论】:
标签: android
好的,我找到了解决问题的方法。我从FLAG_ACTIVITY_NEW_TASK 的通知开始了一个活动。但在我看来,如果亲和力与默认亲和力不同,这个活动只会在自己的任务中启动。所以我不得不在清单中添加不同的亲和力。
似乎FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 并没有(如记录的那样)从最近的活动中排除活动,而是排除了活动从最近开始的整个任务(而不是整个应用程序)。由于我没有设置不同的亲和力,我想排除的活动是在同一个任务中启动的(尽管我已经设置了FLAG_ACTIVITY_NEW_TASK),所以我的整个应用程序(因为它只在一个任务中运行)被排除在外最近的。
现在我为从 Notification 启动的 Activity 设置了不同的关联,并以 FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 启动它。当我离开此 Activity 并长按 HOME 按钮时,我可以选择我的应用程序,默认任务将启动或置于最前面。
如果我上面提到的有误,请随时纠正...
【讨论】:
android:taskAffinity="com.yourpackage.YourActivity"
我不清楚你想要什么。
“我怎么能有我的应用程序在最近,但有主活动 开始了吗?”
如果您想始终使用长按主页来启动一项活动,您可以在清单中将您的活动定义为singleTask。
这样,当您在长按 HOME 中选择快捷方式时,它将始终显示 MAIN, singleTask 活动。我这样说是因为我曾经使用过这种行为。 ;-)
我相信通过使用它,您仍然可以正常从通知中启动活动,例如使用Intents。
在活动标签中:
android:launchMode="singleTask"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
【讨论】: