如果存在其他活动,则进入前台通知

时间:2014-04-11 12:22:39

标签: android notifications

我用android创建messenger,每个收到的邮件都会显示通知,当app从某人收到一些邮件时会调用此方法,内容是来自朋友的邮件,而title是朋友的名字,每个人都有ID,并且我也将朋友ID传递给FriendID参数。

public static void CreateNotify(Context context, String Content, String title, String FriendID) {
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.ic_launcher)
    .setLargeIcon(icon)
    .setContentTitle(title)
    .setContentText(Content)
    .setLights(Color.BLUE, 1000, 500)
    .setAutoCancel(true);

    Intent resultIntent = new Intent(context, Messenger.class);
    resultIntent.putExtra("ID", FriendID);
int mNotificationId = FriendID.hashCode();
    PendingIntent resultPendingIntent = PendingIntent.getActivity(context, mNotificationId, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT|Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);

    resultIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);

    mBuilder.setContentIntent(resultPendingIntent);

    NotificationManager mNotifyMgr = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    mNotifyMgr.notify(mNotificationId, mBuilder.build());
}

每件事都没问题,但如果我的朋友(A)给我发消息,我看到通知,我点击它会显示我的Messenger活动,在这种状态下我的朋友(B)给我发消息我点击通知我会看到消息我(B)的朋友...... 现在当我的朋友(A)发给我新的短信时,通知会告诉我来自我(A)的通知,当我点击它时,Messenger活动会创建新的并会告诉我... 我想要而不是创建新实例,将最后一个messenger实例带到前面(A)

1 个答案:

答案 0 :(得分:1)

this question中找到了一些好的答案。简而言之,一个好方法是添加到您的清单

<activity 
...
android:launchMode="singleTask" >

确保只有一个活动副本正在运行,并将其带到前面。根据您的目标,您可能还想使用Intent下的一些标志。