`
thierry.xing
  • 浏览: 665038 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
580fa9c1-4a0c-3f40-a55a-c9256ce73302
Sencha Touch中...
浏览量:0
社区版块
存档分类
最新评论

PendingIntent的重复问题

 
阅读更多

今天做Android推送通知模块,发现在Service中使用PendingIntent打开Activity时,虽然每次通知都会改变putExtra中的值,但是Activity里getStringExtra时,值没有任何变化,很奇怪。


加了一些Flag

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
 


也没有起作用

 

查了一些资料,发现如果你之前已经创建过一个PendingIntent,而之后创建的PendingIntent和之前的基本相似,那么就必须加上如下的声明PendingIntent.FLAG_UPDATE_CURRENT,否则extras不会传递到目标Activity

 

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, 
                        notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
 


原文如下:

http://stackoverflow.com/questions/4340431/how-can-i-correctly-pass-unique-extras-to-a-pending-intent

 

分享到:
评论

相关推荐

    博客《详解PendingIntent》对应的有问题的PendingIntent源码

    在本文中,我们将深入探讨`PendingIntent`的工作原理,以及博客《详解PendingIntent》中提到的问题。 `PendingIntent`的工作机制可以分为以下几个关键点: 1. **请求模式**:`PendingIntent`有三种请求模式:`GET_...

    博客《详解PendingIntent》有问题的源码第二部分

    - 重复创建可能导致内存泄漏,应妥善处理和回收`PendingIntent`。 - 避免暴露敏感信息,如不使用`FLAG_GRANT_READ_URI_PERMISSION`等权限除非必要。 - 注意使用`FLAG_CANCEL_CURRENT`和`FLAG_UPDATE_CURRENT`,...

    AlarmManager、PendingIntent的使用\\附件Home监听十分钟后再次启动应用取消服务

    5. 如果需要在服务执行完毕后取消服务,可以在服务内部取消对应的`AlarmManager`闹钟,以防止不必要的重复执行。这可以通过`AlarmManager`的`cancel()`方法实现,传入相同的`PendingIntent`即可。 在实际应用中,`...

    android-alarms:使用 AlarmManager、BroadcastReceiver 和 PendingIntent 的重复 Android 警报的简单示例

    在这个示例中,我们将详细探讨如何使用`AlarmManager`、`BroadcastReceiver`和`PendingIntent`来实现一个重复的Android警报。 首先,`AlarmManager`是系统服务,可以通过以下方式获取: ```java AlarmManager ...

    mooc_android_lesson18_AlarmManager和PendingIntent实现定时提醒功能

    通过这些触发类型,开发者可以灵活地设置一次性任务或重复任务。 1. `RTC`: 使用这个模式,闹钟会在指定的绝对时间到达时触发。时间是基于系统的协调世界时(UTC)。 2. `RTC_WAKEUP`: 类似于`RTC`,但在触发时会...

    Android编程实现PendingIntent控制多个闹钟的方法

    2. 针对不同的Android版本,可能需要使用 `AlarmManager.setRepeating()` 或 `AlarmManager.setInexactRepeating()` 来设置重复的闹钟,以适应系统的电源管理策略。 3. 在广播接收器中,如果需要持久化的操作(如...

    Android AlarmManager实现多个定时重复提醒

    本文将深入探讨如何使用`AlarmManager`来实现多个定时且重复的提醒功能。 首先,我们需要理解`AlarmManager`的工作原理。`AlarmManager`通过向系统注册闹钟事件,当达到设定的时间点时,会触发一个`PendingIntent`...

    实现可定时响起的闹钟----PendingIntent 与 AlarmManager 的运用

    首先,`AlarmManager`是Android系统中的一个服务,用于安排在未来某一时刻启动或重复执行操作。它可以设置精确到毫秒的定时任务,非常适合用来创建闹钟。`AlarmManager`提供了多种触发类型,如ELAPSED_REALTIME、RTC...

    课程闹钟 能重复自定义重复时间 安卓android期末作业

    【课程闹钟:能重复自定义重复时间 安卓android期末作业】 在安卓平台上,创建一个自定义的、可重复的课程闹钟是一项常见的任务,尤其对于安卓开发的学习者而言,这是一项很好的实践项目。本项目的核心是使用...

    Android复杂闹钟

    然后弹对话框来实现时间的设置和周几重复的功能,这个功能能实现,我测试了!正确无误!需要注意的地方有两个:listview每次滑动的时候,记得设置背景为透明, mAlarmListView.setCacheColorHint(0);另一个是利用...

    android 闹钟定时操作

    在创建PendingIntent时,通常会传入`PendingIntent.FLAG_UPDATE_CURRENT`标志,以更新已存在的Intent,防止重复创建。 4. **注意点**: - 自Android 6.0(Marshmallow)开始,应用在后台设置闹钟可能需要用户授权`...

    本地通知定时提醒

    然后,使用AlarmManager的setRepeating方法设置定时提醒,传入触发的时间、重复间隔以及我们的PendingIntent。 ```java import android.app.AlarmManager import android.app.PendingIntent import android.content...

    多个闹钟的添加与取消并弹出通知栏提醒

    2. 设置触发时间和重复间隔:使用`setExact()`或`setRepeating()`方法设置闹钟。例如,设置一个每天早上7点的闹钟: ```java Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 7); ...

    Android receiver 多次启动相同Activity

    2. **使用PendingIntent**:通过PendingIntent来启动Activity,它可以避免因为广播重复触发而导致的多次启动。PendingIntent具有唯一性,同一广播触发的PendingIntent只能启动一次目标Activity。 3. **设置单例...

    android 闹钟定时任务 AlarmManager

    3. `setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)`:设置周期性闹钟,`interval`是重复间隔。 4. `cancel(PendingIntent operation)`:取消由`PendingIntent`标识的所有...

    Android闹钟.zip

    8. **适配不同Android版本**: 不同的Android版本可能有不同的API接口,因此在编写代码时,需要注意版本兼容性问题,使用`Build.VERSION.SDK_INT`进行条件判断,以调用合适的API。 通过这个项目,开发者可以学习到...

    android AlarmManager实现任意时间间隔提醒

    这里需要使用`AlarmManager.setRepeating()`方法,传入`RTC`类型的触发器、起始时间、重复间隔(例如,每两天一次,因为是周一和周三)。起始时间应该是用户选择的最早时间段的下次出现时间。 4. **创建...

    自己软件中调用android系统闹钟

    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); // 使用RTC_WAKEUP策略,确保设备在休眠状态下也会唤醒 long triggerAtTime = System.currentTimeMillis() + 60 * 1000; // ...

    Android 闹钟实例源码

    在Android开发中,闹钟功能是一项基础且重要的应用,它涉及到系统级服务的交互和用户界面的呈现。本文将深入探讨“Android 闹钟实例...此外,对源码进行调试和修改,有助于提升解决问题的能力和对Android系统的理解。

    android闹钟AlarmManager

    3. 使用`PendingIntent`来避免重复触发和确保在应用重启后闹钟仍然有效。 总结: 在Android中,`AlarmManager`是实现定时任务的关键组件。通过创建`BroadcastReceiver`、设置和取消闹钟,我们可以构建出功能丰富的...

Global site tag (gtag.js) - Google Analytics