代码之家  ›  专栏  ›  技术社区  ›  Pentium10

Android一直在缓存我的意图,如何声明一个未决的意图来保存新的额外内容?

  •  58
  • Pentium10  · 技术社区  · 14 年前

    几天前,我正在努力寻找一种方法来使用我的闹钟定制意图。尽管我得到了一个明确的答案,我必须根据一些独特的ID来定制意图。 setAction()

    Intent intent = new Intent(this, viewContactQuick.class);
    intent.setAction("newmessage"+objContact.getId());//unique per contact
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK ).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP );
    intent.putExtra("id", Long.parseLong(objContact.getId()));
    intent.putExtra("results", result.toArray());
    
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intent, 0);
    

    然后由通知管理器使用

    NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
    // first try to clear any active notification with this contact ID
    mNotificationManager.cancel(Integer.parseInt(objContact.getId()));
    
    // then raise a new notification for this contact ID
    mNotificationManager.notify(Integer.parseInt(objContact.getId()), notification);
    

    • 应用程序为联系人创建消息
    • 提供了一个包含联系人id和有关消息的详细信息的意图
    • 消息引发通知
    • 用户在通知上执行操作,应用程序显示意图传递的消息

    问题

    对于一个联系人,这种情况可能不止一次。当生成第二条消息时,会很好地发出通知(这里的消息很好),但是当用户操作通知时,它使用的是旧数据,所以传递的是前一条消息,而不是全新的消息。

    2 回复  |  直到 14 年前
        1
  •  101
  •   CommonsWare    12 年前

    如果你的一个朋友 PendingIntents 因为此联系人在任何时间点都是优秀的,或者如果您总是想使用最新的附加设置,请使用 FLAG_UPDATE_CURRENT 当您创建 PendingIntent

    如果有多个特定联系人

    intent.setAction("actionstring" + System.currentTimeMillis());
    

    更新

    getActivity() 亲如一家 处理意图 显然可以用来创建不同的 相同基础的对象 Intent ,尽管我从未尝试过。

        2
  •  37
  •   Fedor    14 年前

    我通常指定唯一的请求代码,以防止挂起的内容相互重写:

    PendingIntent pending = PendingIntent.getService(context, unique_id, intent, 0);