Android AlarmManager设置重复问题

Android AlarmManager设置重复问题,android,android-intent,alarmmanager,Android,Android Intent,Alarmmanager,我正在开发一个feeder应用程序,我有一个选项,让用户为每个源(feedsource)选择指定从internet获取数据和更新数据库的时间 我正在使用AlarmManager进行此操作 我通常做的是: 获取所有提供者。 在map>中分组,确保键是睡眠时间,值是提供者列表 为了什么 稍后,我会对每个键遍历这个字典,并安排一个警报来发送一个包含意图中数据的广播 在我的广播接收器中,我想得到这些数据 我不了解的问题是,我在for each循环中传递一个键(睡眠时间)来安排事件。。。实际上我有两把钥匙

我正在开发一个feeder应用程序,我有一个选项,让用户为每个源(feedsource)选择指定从internet获取数据和更新数据库的时间

我正在使用AlarmManager进行此操作

我通常做的是:

获取所有提供者。 在map>中分组,确保键是睡眠时间,值是提供者列表

为了什么

稍后,我会对每个键遍历这个字典,并安排一个警报来发送一个包含意图中数据的广播

在我的广播接收器中,我想得到这些数据

我不了解的问题是,我在for each循环中传递一个键(睡眠时间)来安排事件。。。实际上我有两把钥匙,[5,10]

在我收到钥匙时,我只得到钥匙5。。2次。。。。似乎同样的意图也传达给了接收者

代码如下:

private void setAlarmForEnabledProviders(HashMap<Integer, ArrayList<Provider>> map)
        {
            Context ctx = FeederPeriodicalUpdater.this;
            AlarmManager alarmMngr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

            for(Integer key : map.keySet())
            {
                int keyValue = key.intValue();
                Intent intent = new Intent(FeederPeriodicalUpdater.this, OnAlarmReceiver.class);


                intent.putExtra(AlarmManager_IntentKey, keyValue);
                PendingIntent pIntent = PendingIntent.getBroadcast(ctx, 0, intent, 0);

                long firstTime = SystemClock.elapsedRealtime();
                alarmMngr.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, pIntent);
            }               
        }

尝试将请求代码更改为PendingEvent的getBroadcast()的第二个参数

PendingIntent pIntent = PendingIntent.getBroadcast(ctx, "here change the value everytime", intent, 0);

就像传递唯一的号码,因为你发送了相同的意图和请求,我想它将被覆盖

我很高兴你尝试实现我在上一个问题中给你的设计:也许接受我的答案?是的,我输入了相同的答案,像那样尝试。谢谢。。我真的很感谢你的帮助。文档至少很弱。。。下面是它所说的。。。。检索将执行广播的PendingEvent,如调用Context.sendBroadcast()。Parameters context此挂起内容应在其中执行广播的上下文。requestCode发件人的专用请求代码(当前未使用)。意图广播的意图。3工厂方法。。。我想现在实现的是一个类似于字典的东西,它会将密钥的缓存版本返回给我。。。因此,当我使用第二次并且不传递任何内容时,返回给我的值是相同的。。。。。。。
PendingIntent pIntent = PendingIntent.getBroadcast(ctx, "here change the value everytime", intent, 0);