今天做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`的工作机制可以分为以下几个关键点: 1. **请求模式**:`PendingIntent`有三种请求模式:`GET_...
- 重复创建可能导致内存泄漏,应妥善处理和回收`PendingIntent`。 - 避免暴露敏感信息,如不使用`FLAG_GRANT_READ_URI_PERMISSION`等权限除非必要。 - 注意使用`FLAG_CANCEL_CURRENT`和`FLAG_UPDATE_CURRENT`,...
5. 如果需要在服务执行完毕后取消服务,可以在服务内部取消对应的`AlarmManager`闹钟,以防止不必要的重复执行。这可以通过`AlarmManager`的`cancel()`方法实现,传入相同的`PendingIntent`即可。 在实际应用中,`...
在这个示例中,我们将详细探讨如何使用`AlarmManager`、`BroadcastReceiver`和`PendingIntent`来实现一个重复的Android警报。 首先,`AlarmManager`是系统服务,可以通过以下方式获取: ```java AlarmManager ...
通过这些触发类型,开发者可以灵活地设置一次性任务或重复任务。 1. `RTC`: 使用这个模式,闹钟会在指定的绝对时间到达时触发。时间是基于系统的协调世界时(UTC)。 2. `RTC_WAKEUP`: 类似于`RTC`,但在触发时会...
2. 针对不同的Android版本,可能需要使用 `AlarmManager.setRepeating()` 或 `AlarmManager.setInexactRepeating()` 来设置重复的闹钟,以适应系统的电源管理策略。 3. 在广播接收器中,如果需要持久化的操作(如...
本文将深入探讨如何使用`AlarmManager`来实现多个定时且重复的提醒功能。 首先,我们需要理解`AlarmManager`的工作原理。`AlarmManager`通过向系统注册闹钟事件,当达到设定的时间点时,会触发一个`PendingIntent`...
首先,`AlarmManager`是Android系统中的一个服务,用于安排在未来某一时刻启动或重复执行操作。它可以设置精确到毫秒的定时任务,非常适合用来创建闹钟。`AlarmManager`提供了多种触发类型,如ELAPSED_REALTIME、RTC...
【课程闹钟:能重复自定义重复时间 安卓android期末作业】 在安卓平台上,创建一个自定义的、可重复的课程闹钟是一项常见的任务,尤其对于安卓开发的学习者而言,这是一项很好的实践项目。本项目的核心是使用...
然后弹对话框来实现时间的设置和周几重复的功能,这个功能能实现,我测试了!正确无误!需要注意的地方有两个:listview每次滑动的时候,记得设置背景为透明, mAlarmListView.setCacheColorHint(0);另一个是利用...
在创建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); ...
2. **使用PendingIntent**:通过PendingIntent来启动Activity,它可以避免因为广播重复触发而导致的多次启动。PendingIntent具有唯一性,同一广播触发的PendingIntent只能启动一次目标Activity。 3. **设置单例...
3. `setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation)`:设置周期性闹钟,`interval`是重复间隔。 4. `cancel(PendingIntent operation)`:取消由`PendingIntent`标识的所有...
8. **适配不同Android版本**: 不同的Android版本可能有不同的API接口,因此在编写代码时,需要注意版本兼容性问题,使用`Build.VERSION.SDK_INT`进行条件判断,以调用合适的API。 通过这个项目,开发者可以学习到...
这里需要使用`AlarmManager.setRepeating()`方法,传入`RTC`类型的触发器、起始时间、重复间隔(例如,每两天一次,因为是周一和周三)。起始时间应该是用户选择的最早时间段的下次出现时间。 4. **创建...
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); // 使用RTC_WAKEUP策略,确保设备在休眠状态下也会唤醒 long triggerAtTime = System.currentTimeMillis() + 60 * 1000; // ...
在Android开发中,闹钟功能是一项基础且重要的应用,它涉及到系统级服务的交互和用户界面的呈现。本文将深入探讨“Android 闹钟实例...此外,对源码进行调试和修改,有助于提升解决问题的能力和对Android系统的理解。
3. 使用`PendingIntent`来避免重复触发和确保在应用重启后闹钟仍然有效。 总结: 在Android中,`AlarmManager`是实现定时任务的关键组件。通过创建`BroadcastReceiver`、设置和取消闹钟,我们可以构建出功能丰富的...