Intent updateIntent = new Intent(GetNoticeService.this,
DetailGonggaoActivity.class); updateIntent.putExtra("type", "weidu"); updateIntent.putExtra("title",
(String) json.get("title"));
updateIntent.putExtra("id", json.get("noticeid")
.toString()); //加上这句就不会出现同一个activity出现多次的情况了
updateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //下面有对个参数,是设置的关键
PendingIntent updatePendingIntent = PendingIntent.getActivity(
GetNoticeService.this, i, updateIntent,PendingIntent.FLAG_UPDATE_CURRENT);
Notification updateNotification = new Notification();
// 设置通知栏显示内容
updateNotification.icon = R.drawable.logo;
updateNotification.flags |= updateNotification.FLAG_AUTO_CANCEL;
updateNotification.tickerText = "外勤精灵发来新的公告通知";
updateNotification.defaults = Notification.DEFAULT_SOUND;// 铃声提醒
updateNotification.setLatestEventInfo(
GetNoticeService.this,
"外勤精灵发来新的公告通知", (String) json.get("title"),
updatePendingIntent);
updateNotificationManager.notify(i, updateNotification);

  

//加上这句就不会出现同一个activity出现多次的情况了,不解释
updateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
updateNotificationManager.notify(i, updateNotification);这句传递的i标记了updateNotification的位置和id相同的时候就覆盖原来的updateNotification,所以要传递不同的id,使不同的updateNotification不覆盖。
PendingIntent updatePendingIntent = PendingIntent.getActivity(
GetNoticeService.this, i, updateIntent,PendingIntent.FLAG_UPDATE_CURRENT);
Notification updateNotification = new Notification();
flags有四个取值:
int FLAG_CANCEL_CURRENT:如果该PendingIntent已经存在,则在生成新的之前取消当前的。
int FLAG_NO_CREATE:如果该PendingIntent不存在,直接返回null而不是创建一个PendingIntent.
int FLAG_ONE_SHOT:该PendingIntent只能用一次,在send()方法执行后,自动取消。
int FLAG_UPDATE_CURRENT:如果该PendingIntent已经存在,则用新传入的Intent更新当前的数据。

我们需要把最后一个参数改为PendingIntent.FLAG_UPDATE_CURRENT,这样在启动的Activity里就可以用接收Intent传送数据的方法正常接收。

前面的id作用一样

												

android PendingIntent 使用通知传递多个参数,及不覆盖的问题的更多相关文章

  1. Android Handler之Message传递参数

    最近发现Message,发送消息可以传递参数,这个思路很好,所以写了一个例子,点击屏幕,给Activity发送一个消息,传递两个参数,并把这个activity销毁掉! 程序打开界面: 点击屏幕,销毁a ...

  2. PendingIntent传递数据注意参数RequestCode和Flag

    数据发送方: public static void notify(Context context, TxrjMessage msg) {     NotificationManager notifiM ...

  3. Android中的通知—Notification 自定义通知

    Android中Notification通知的实现步骤: 1.获取NotificationManager对象NotificationManager的三个公共方法:①cancel(int id) 取消以 ...

  4. Android开发——Notification通知的使用及NotificationCopat.Builder常用设置API

    想要看全部设置的请看这一篇 [转]NotificationCopat.Builder全部设置 常用设置: 设置属性 说明 setAutoCancel(boolean autocancel) 设置点击信 ...

  5. 【Android】状态栏通知Notification、NotificationManager详解(转)

    在Android系统中,发一个状态栏通知还是很方便的.下面我们就来看一下,怎么发送状态栏通知,状态栏通知又有哪些参数可以设置? 首先,发送一个状态栏通知必须用到两个类:  NotificationMa ...

  6. Android Fragment间对象传递

    由于Activity相对较为笨重,因而在日常的开发中很多时候会用到Fragment.然而Activity之间是通过Intent进行数据的传递,那Fragment是通过什么来进行传递的呢?Fragmen ...

  7. android Activity之间数据传递 Parcelable和Serializable接口的使用

    Activity之间传数据时,为了避免麻烦,往往会将一些值封装成对象,然后将整个对象传递过去.传对象的时候有两种情况,一种是实现Parcelable接口,一种是实现Serializable接口.0.解 ...

  8. Appium Server 传递的基本参数

    Appium Server  传递的基本参数 官方列表 Appium server capabilities Capability Description Values automationName ...

  9. wemall app商城源码Android之支付宝通知处理类

    wemall-mobile是基于WeMall的Android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之处 ...

随机推荐

  1. JavaScript.how-to-debug-javascript

    How to debug JavaScript code 1. 写一个HTML文件.例如: <!DOCTYPE html> <html> <title>Web Pa ...

  2. 20172306《Java程序设计与数据结构》第九周学习总结

    20172306<Java程序设计>第九周学习总结 教材学习内容总结 第十一章: try-catch语句.其中还有finally语句.try是进行某些操作,catch是捕获异常,并通过某些 ...

  3. POJ 3469.Dual Core CPU 最大流dinic算法模板

    Dual Core CPU Time Limit: 15000MS   Memory Limit: 131072K Total Submissions: 24830   Accepted: 10756 ...

  4. c中extern的作用

    参考资料: http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777431.html

  5. 客户端服务端web问题

    情况是这样: 我这边是C++socket/TCP服务器,然后有几万台客户端长连接我的服务器,这时,web端想对客户端进行参数设置,于是web端连到我的TCP服务器发来它想设置的客户端的ID和设置参数, ...

  6. Unix和Windows文件格式转化

    可能的原因有: 1)执行权限的问题 解决方法: chmod +x ***.py 2)python版本的问题 解决方法:在执行时或者在py文件中选择好对应的Python的版本 3)python文件格式的 ...

  7. Python学习1 基础数据类型

    一.字符串                         1.去除首尾字符 str_test = 'Hello World!' str_test.split()#将字符串分割为列表str_test. ...

  8. [规则原则定理]规则原则定理章3Java命名规范

    JAVA命名规范 驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰 ...

  9. c# 通过按钮获取文件夹和打开磁盘文件

    Button控件获取文件夹: FolderBrowserDialog fileDialog = new FolderBrowserDialog(); if (fileDialog.ShowDialog ...

  10. C语言基础第五次作业

    题目7-2 统计一行文本的单词个数 1.实验代码 #include <stdio.h> int main() { char a; ,countword=; ){ scanf("% ...