如果活动已在前面,则通知PendingIntent不会激活

时间:2014-02-03 12:29:53

标签: android android-notifications android-pendingintent

Service A创建一个NotificationPendingIntent打开Activity B.用户拉下通知抽屉,然后按Notification {{1} B先前在前面。 Activity基本上会添加PendingIntent B的另一个实例,而不是打开当前打开的实例。

如果Activity已经打开,有没有办法让PendingIntent打开Activity,如果那里有Activity的实例,请返回后台,然后打开一个新实例否则?

3 个答案:

答案 0 :(得分:2)

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP创建Intent时添加Notification

同时设置Intent.FLAG_ACTIVITY_CLEAR_TOPIntent.FLAG_ACTIVITY_SINGLE_TOP会导致使用Activity的现有实例(将调用onNewIntent())。如果您只指定Intent.FLAG_ACTIVITY_CLEAR_TOP且已存在Activity的现有实例,则该实例(以及其上的所有其他活动)将完成并从堆栈中删除并且 new将创建Activity的实例(将调用onCreate()。)

答案 1 :(得分:0)

是的,您可以使用活动的单个任务或单个实例启动模式(或在待处理的意图标记中)来控制此行为。

查看launch modes文档,了解有关如何设置这些标记的详细信息。

答案 2 :(得分:0)

您可以在Manifest文件中设置Activity的属性,如下所示:

android:launchMode="singleTask"

在为PendingIntent定义Flags时,您可以使用flags作为:

Intent in=new Intent();
in.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);