Android通知单击 - 不要反向堆栈活动

时间:2015-04-08 20:22:43

标签: android android-intent notifications

我在后台提供了一个通知服务。

我想要下一件事:

如果我点击通知并且未打开应用,请打开XActivity。

如果应用程序已打开并且已创建XActivity,请转到此处,不要重新创建活动(因为如果发生这种情况,请在返回键上再次看到相同的活动)。

我的通知代码

 NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context)
                    .setSmallIcon(R.drawable.ic_launcher)
                    .setContentTitle("New posts!")
                    .setContentText("New funny posts had just arrived! Click here to see them!");
    mBuilder.setAutoCancel(true);
    Intent resultIntent = new Intent(context, XActivity.class);

    PendingIntent resultPendingIntent =
            PendingIntent.getActivity(
                    context,
                    0,
                    resultIntent,
                    PendingIntent.FLAG_UPDATE_CURRENT
            );
    mBuilder.setContentIntent(resultPendingIntent);

    int mNotificationId = 001;

//获取NotificationManager服务的实例         NotificationManager mNotifyMgr =                 (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); //构建通知并发布通知。         mNotifyMgr.notify(mNotificationId,mBuilder.build());

我从XActivity启动服务。 (只是一个活动名称示例)

谢谢。

2 个答案:

答案 0 :(得分:2)

我有同样的问题,我做的是,我将此行android:launchMode="singleTop"添加到我在清单中的活动中,并且它有效。

答案 1 :(得分:0)

您的案例中重复活动的问题是因为Android中的Activity的标准结构设计。要仅创建单个活动实例(无重复),您需要在清单文件中为活动提供launchMode属性。您可以使用 singleTop 属性来执行此操作。您可以在提供的链接中阅读更多内容。

另外,对于新数据访问,您可以使用onNewIntent()获取此活动的新意图,并使用setIntent()设置意图并继续使用新数据。

希望这有帮助。

感谢。