Java 如何避免报警管理器使用相同的时间间隔和不同的消息动态覆盖?

Java 如何避免报警管理器使用相同的时间间隔和不同的消息动态覆盖?,java,android,sms,alarmmanager,Java,Android,Sms,Alarmmanager,如果我们为两条不同的短信选择相同的时间间隔,会发生什么?它不会以各自的方式发送,而是获取第一条短信内容并发送第二条短信。 我想发送不同的短信与相同的间隔使用动态 MyAlaramactivity.java else if(mytime.equals(“每5分钟”)){ 必须避免在相同的时间间隔内覆盖AlamManager问题: 挂起的意图将被覆盖 解决方案: 您只需要为每个待定的意图提供唯一id 示例: 您已经在中提供了0作为id pendingIntent = PendingIntent.ge

如果我们为两条不同的短信选择相同的时间间隔,会发生什么?它不会以各自的方式发送,而是获取第一条短信内容并发送第二条短信。 我想发送不同的短信与相同的间隔使用动态

MyAlaramactivity.java

else if(mytime.equals(“每5分钟”)){

必须避免在相同的时间间隔内覆盖AlamManager问题:

挂起的意图将被覆盖

解决方案: 您只需要为每个待定的意图提供
唯一id

示例:

您已经在中提供了
0
作为
id

pendingIntent = PendingIntent.getService(
                                AndroidAlarmSMS.this, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
因此,不要在下一个待定意图中再次提供
0
,请使用
1和2
而不是
0
,如下所述:

pendingIntent1 = PendingIntent.getService(
                                AndroidAlarmSMS.this, 1, myIntent1, PendingIntent.FLAG_UPDATE_CURRENT);


pendingIntent2 = PendingIntent.getService(
                                AndroidAlarmSMS.this, 2, myIntent2, PendingIntent.FLAG_UPDATE_CURRENT);

我希望这会有帮助!!

我查看了你的代码,因为你想先设置多个alaram,你必须创建alaram管理器数组,并将代码更改为这样。首先你创建一个名为fivemin的全局整数变量

else if (mytime.equals("Every 5 Minutes")) {
fivemin=fivemin+1;

AlarmManager[] alarmManager=new AlarmManager[24];


ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();



Intent myIntent1 = new Intent(AndroidAlarmSMS.this,
                                    MyAlarmService.class);
                            Bundle bundle = new Bundle();
                    bundle.putInt("service", 1);
                    myIntent1.putExtras(bundle);


                            myIntent1.setData(Uri.parse("timer:myIntent1"));
                            pendingIntent = PendingIntent.getService(
                                    AndroidAlarmSMS.this, fivemin, myIntent1,0);

                            alarmManager[fivemin] =  (AlarmManager) getSystemService(ALARM_SERVICE);        
                            alarmManager[fivemin].setRepeating(AlarmManager.RTC_WAKEUP,
                                    calendar.getTimeInMillis(), 1000 * 60 * 2,
                                    pendingIntent);

                            intentArray.add(pendingIntent);
else if(mytime.equals(“每5分钟”)){
五分钟=五分钟+1;
AlarmManager[]AlarmManager=新的AlarmManager[24];
ArrayList intentArray=新的ArrayList();
意向myIntent1=新意向(AndroidAlarmSMS.this,
MyAlarmService.class);
Bundle=新Bundle();
bundle.putInt(“服务”,1);
myIntent1.putExtras(bundle);
setData(Uri.parse(“timer:myIntent1”);
PendingEvent=PendingEvent.getService(
雄蕊亚目:这,五分钟,我的意图1,0);
alarmManager[fivemin]=(alarmManager)getSystemService(报警服务);
alarmManager[fivemin].setRepeating(alarmManager.RTC_唤醒,
calendar.getTimeInMillis(),1000*60*2,
悬挂式);
intentArray.add(挂起内容);

,谢谢您的回答,但我已经将挂起的意图名称更改为不同的名称,现在我将每个名称的共享首选项分别放在一起,这是有效的;现在,如果我们每5分钟制作一次不同的频率,每小时制作一次,会发生什么,这很好,但是如果我们将11.00间隔设置为每5分钟,将11.01设置为ev间隔每5分钟不,那么时间到了overridden@KarthickM:您正在检查这样的条件:
status.equalsIgnoreCase(“s1”)
。但是您没有通过
s1
s2
任何地方。请检查您的代码,它是
1
2
@kartichm:请按照标准做法命名任何变量。这样做很糟糕read@MehalJoisar,我忘了更新我的服务代码,现在你检查一下
else if (mytime.equals("Every 5 Minutes")) {
fivemin=fivemin+1;

AlarmManager[] alarmManager=new AlarmManager[24];


ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();



Intent myIntent1 = new Intent(AndroidAlarmSMS.this,
                                    MyAlarmService.class);
                            Bundle bundle = new Bundle();
                    bundle.putInt("service", 1);
                    myIntent1.putExtras(bundle);


                            myIntent1.setData(Uri.parse("timer:myIntent1"));
                            pendingIntent = PendingIntent.getService(
                                    AndroidAlarmSMS.this, fivemin, myIntent1,0);

                            alarmManager[fivemin] =  (AlarmManager) getSystemService(ALARM_SERVICE);        
                            alarmManager[fivemin].setRepeating(AlarmManager.RTC_WAKEUP,
                                    calendar.getTimeInMillis(), 1000 * 60 * 2,
                                    pendingIntent);

                            intentArray.add(pendingIntent);