Android 使用相同的请求代码保留两个PendingEvents

Android 使用相同的请求代码保留两个PendingEvents,android,alarmmanager,android-pendingintent,Android,Alarmmanager,Android Pendingintent,我正在用Android开发一个报警应用程序。流程非常简单,我只是创建了一个pendingent,然后调用AlarmManager中的setExact()方法,如下所示 Intent myIntent = new Intent(context, BroadcastReceiver.class); pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0); AlarmMan

我正在用Android开发一个报警应用程序。流程非常简单,我只是创建了一个pendingent,然后调用AlarmManager中的setExact()方法,如下所示

        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);
经过一些测试后,我意识到使用上面的代码片段,我只能设置一个报警,因为我将pendingentrequestCode设置为零,如果我将另一个报警的requestCode设置为0,那么它将覆盖上一个报警。有没有办法在不更改请求代码的情况下解决此问题?我在想也许这些标志可以帮助我,但我没有找到一个标志不会覆盖以前的PendingEvent

我知道显而易见的解决方案是将0更改为另一个int,然后跟踪我的所有int,选择一个未使用的int。如果我刚刚启动这个项目,这个解决方案会很好,但是我已经在中间了,我使用了预定义的<强> Enums < /强>的请求代码。更改此机制并跟踪单个INT是非常困难的,这就是为什么我要问,在注册具有相同请求代码的新内容时,是否有方法不覆盖挂起内容。先谢谢你


我想问的是,是否存在某种能够区分它们的标志

没有,这是有意义的,因为这已经是requestCode参数的目的

有关信息,请参阅以下有关标志的选项:

您必须更改您的机制,以便能够为挂起的意图使用不同的请求代码。这可能是很多工作,但这是你必须做的


我想问的是,是否存在某种能够区分它们的标志

没有,这是有意义的,因为这已经是requestCode参数的目的

有关信息,请参阅以下有关标志的选项:


您必须更改您的机制,以便能够为挂起的意图使用不同的请求代码。这可能需要做很多工作,但这是您必须做的。

您可以使
意图变得独特,即在每个意图上设置不同的操作。然后,您仍然可以使用相同的
requestCode
,并使用不同的
pendingent
s


如果您希望以后能够取消警报,则需要跟踪所使用的操作。

您可以使
意图
唯一,以便在每个操作上设置不同的操作。然后,您仍然可以使用相同的
requestCode
,并使用不同的
pendingent
s


如果您希望以后能够取消警报,您需要跟踪所使用的操作。

我询问是否存在能够区分警报的特定类型的标志我询问是否存在能够区分警报的特定类型的标志,不需要。如果使
意图
s都是唯一的,则不必使用不同的
requestCode
s。您可以通过在每个
Intent
中设置不同的操作或不同的数据来实现这一点@David极好,我不知道。如果OP删除了accept,我将删除我的回答实际上,不。如果您使
意图
s都是唯一的,则不必使用不同的
requestCode
s。您可以通过在每个
Intent
中设置不同的操作或不同的数据来实现这一点@David极好,我不知道。如果OP删除接受,我将删除我的应答器,或者您可以使用
setData
方法。请参阅或使用
setData
方法。看见