2011-03-20 100 views
4

我知道有几个帖子是针对我要问的,但我无法找到正确的答案。android - launchMode = singleTask和Notifications?

根据我的理解,如果您的主要活动(我们称之为A)launchMode设置为singleTask,并且A启动了活动B,则单击Home按钮将销毁历史堆栈并重新启动应用程序你回到A而不是B.

我将launchMode设置为singleTask,因为我有一个持久通知,并且我不希望在用户单击通知时出现主活动的多个实例。

有什么我失踪,会让我迎合两个?

因此,我问是否有一种方法可以确保每当用户希望从通知或不通知应用程序启动应用程序时,让他回到最后(当前)活动。

如果我将launchMode更改为singleTop,它可以工作,但每次启动时都会获得主活动的多个实例。

感谢

安德烈亚斯

回答

1

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

或者您可以将launchMode指定为清单中应用程序标记本身的属性。

2

我用下面的代码,以避免活动

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

更改舱单的多个实例

0

我在与这两个approches问题看起来并不适合我。 只有在这种情况下,通知才是完美无缺的: - 在主要活动中使用后退按钮(历史记录仅包含该活动) - 不使用主页按钮 - 如果您正在调用的活动不使用通知,顶部和积极

在任何其他情况下,通知不能再在前台通过使用“新意图(......)”

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" 

在元件内部。

现在我已经有一个通知产生主要活动(如果该活动尚未在前台),并且即使通过按下主页按钮和/或后面的活动“关闭”活动,其行为也是正确的。

相关问题