【发布时间】:2017-08-02 12:24:30
【问题描述】:
我正在 Android 中开发一个警报应用程序。流程非常简单,我只是创建一个 PendingIntent,然后在 AlarmManager 中调用 setExact() 方法,如下所示。 p>
Intent myIntent = new Intent(context, BroadcastReceiver.class);
pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + difference, pendingIntent);
经过一些测试,我意识到使用上面的 sn-p 我只能设置一个警报,因为我将 pendingIntent 的 requestCode 设置为零,如果我设置requestCode 设置为 0 的另一个警报,那么它将覆盖前一个警报。有没有办法在不更改 requestCode 的情况下解决这个问题?我在想也许这些标志可以帮助我,但我没有找到一个不会覆盖以前的 pendingIntent 的标志。
我知道显而易见的解决方案是将 0 更改为另一个 int,然后跟踪我所有的 int,选择一个未使用的。如果我刚刚开始项目,该解决方案会很好,但是我已经在中间并且我使用预定义的 Enums 作为请求代码。更改此机制并跟踪单个整数非常困难,这就是为什么我要问是否有办法在注册具有相同 requestCode 的新 Intent 时不覆盖pendingIntent。提前谢谢你。
【问题讨论】:
-
我在问是否存在某种类型的标志可以区分它们
标签: android alarmmanager android-pendingintent