我用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)
答案 0 :(得分:1)
在this question中找到了一些好的答案。简而言之,一个好方法是添加到您的清单
<activity
...
android:launchMode="singleTask" >
确保只有一个活动副本正在运行,并将其带到前面。根据您的目标,您可能还想使用Intent下的一些标志。