当前位置: 首页 > 知识库问答 >
问题:

如果存在活动,请提前通知,否则请创建

楚意
2023-03-14

我是用android创建的Messenger,收到的每条消息都会显示通知,当app收到某人的消息时会调用此方法,内容是朋友的消息,标题是朋友的名字,每个人都有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)朋友的Messanger...现在当我的朋友(A)给我发新短信时,在通知中会显示来自我的(A)的通知,当我点击它时Messenger活动会创建新的并会显示给我...我想要而不是创建新实例,将Messenger的最后一个实例带到前面(A)

共有1个答案

戴嘉珍
2023-03-14

在这个问题中找到了一些很好的答案。简而言之,一个好方法是添加到您的清单中

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

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

 类似资料:
  • 我的应用程序有通知,它--显然--没有任何标志,每次启动一个新的活动,所以我得到多个相同的活动在彼此之上运行,这是错误的。 到目前为止,我对该通知的意图/待定意图是 奇怪的是,它有时起作用,有时不起作用...我觉得我已经试过了每一种旗帜的组合。

  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 问题内容: 使用Sql Server2012。我有一个存储过程,它的一部分检查用户名是否在表中。如果是,则返回1,否则返回2。这是我的代码: 但是,我一直收到以下错误: ‘1’附近的语法不正确。 使用IF EXIST甚至可以做到吗? 问候 问题答案: 如果您想这样做,那么这就是您要遵循的语法。 您不一定严格要求这些语句,但是最好是从一开始就养成这种习惯。

  • 我目前在活动A中。我收到通知,我想在单击通知时重新创建活动A(完成A,然后再次创建)。意向类似乎没有类似于Pending帐篷的标志。标记取消当前。

  • 单击通知、服务创建新活动和活动创建新服务? 我的应用MainActivity“OnCreate”创建一个“粘性”的服务。 在我的服务中,当有一些通知时,我会发布多个通知。除非用户进入应用程序并阅读通知,否则通知将在那里。在onStartCommand中检查新通知。 按下通知将发送打开MainActivity的意图。 有服务、主要活动和通知。 一段时间后,MainActivity被系统杀死。 单击通

  • 问题内容: 我正在使用PostgreSQL,并且是SQL的初学者。我正在尝试从查询创建表,并且如果运行: 它工作正常。但是然后如果我添加“如果不存在”并运行: 使用完全相同的查询,我得到: 有什么办法吗? 问题答案: CREATE TABLE AS被认为是与普通CREATE TABLE 分开的语句,并且 直到Postgres版本9.5 (请参阅changelog条目)不支持子句 为止 。(请务必查