安卓 - launchMode=singleTask 和通知?

4
我知道有一些关于我即将提问的内容的帖子,但我找不到正确答案的帖子。
据我了解,如果您的主要活动(让我们称其为A)的launchMode设置为singleTask,并且A已启动活动B,那么单击主屏幕按钮将销毁历史堆栈,并重新启动应用程序将带您回到A而不是B。
我将launchMode设置为singleTask,因为我有一个持久通知,我不希望每次用户单击通知时都出现多个主要活动的实例。
是否有我遗漏的东西可以同时满足两者?
所以我想知道是否有一种方法可以确保无论用户是否希望从通知或其他地方启动应用程序,都可以将其带回上一个(当前)活动。
如果我将launchMode更改为singleTop,则可以运行,但每次启动它时都会出现多个主要活动的实例。
谢谢
Andreas
4个回答

3
我使用以下代码来避免活动的多个实例。
Intent intent=new Intent(this,RICO.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0);

我觉得修改清单不太合适


3

你是否尝试将应用中的所有活动的launchMode设置为singleTop?因为我从你的查询中得到的是主要活动不是singleTop,这可能会导致从通知活动启动主要活动后调用另一个主要活动实例。

或者你可以在清单文件中将launchMode作为应用程序标签本身的属性指定。


0

我已经找到了炼金术式的组合,使用意图标志和清单选项来获得我所需的内容:

Intent intent= new Intent(this, YaampActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

使用这些选项

android:launchMode="singleTask"
android:taskAffinity=""
android:excludeFromRecents="true"

在元素内部。

现在我有一个通知,它会生成主活动(如果该活动尚未在前台),即使通过按下主页按钮和/或返回按钮“关闭”活动,其行为也是正确的。


0

我在两种方法中都遇到了问题。 只有在以下情况下通知才能无缝工作: - 在主活动中使用返回按钮(历史记录仅包含该活动) - 不使用主页按钮 - 如果您要调用的活动位于顶部并处于活动状态,则不要使用通知

在任何其他情况下,通知不能再使用“new Intent(...)”调用前台活动。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接