2015-11-06 72 views
-1

我想在一天中的两个不同时间运行我的服务,例如每天上午9.40和下午3.30。我试着用下面的代码构建它,但它只运行我设置的最后一个闹钟,而不是两个闹钟。请帮我看看代码。先谢谢你。我尝试过类似的问题,但它仍然没有给我一个好的结果。Android在一天中的两个不同时间运行相同的广播

**// set the alarm manager** 
     this.context = this; 

     Calendar updateTime = Calendar.getInstance(); 
     updateTime.set(Calendar.HOUR_OF_DAY, 20); 
     updateTime.set(Calendar.MINUTE, 47); 

     Calendar updateTime2 = Calendar.getInstance(); 
     updateTime2.set(Calendar.HOUR_OF_DAY, 20); 
     updateTime2.set(Calendar.MINUTE, 49); 

     Intent alarm = new Intent(MainActivity.this, AlarmReceiver.class); 
     Intent alarm2 = new Intent(MainActivity.this, AlarmReceiver.class); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarm, 
       PendingIntent.FLAG_ONE_SHOT); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC, updateTime.getTimeInMillis(), pendingIntent); 
     PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MainActivity.this, 0, alarm2, 
       PendingIntent.FLAG_ONE_SHOT); 

     AlarmManager alarmManager2 = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager2.set(AlarmManager.RTC, updateTime2.getTimeInMillis(), pendingIntent2); 

回答

1

你得到这个是因为第二个覆盖了第一个。例如,您可以通过为每个意图设置标识符来解决此问题。

1

由于相同的意图,后者将覆盖前者。你可以为每个意图添加一个动作来分开它们,如下所示:

Intent alarm = new Intent(MainActivity.this, AlarmReceiver.class); 
alarm.setAction("my.app.package.ACTION_ALARM_9_40AM"); 

Intent alarm2 = new Intent(MainActivity.this, AlarmReceiver.class); 
alarm2.setAction("my.app.package.ACTION_ALARM_3_30PM"); 

我希望这可以帮助你。

+0

嗨,你能解释一下如何每天只运行一次吗?因为在设置了闹钟之后,无论闹钟时间如何,我都会打开闹钟。 – checkmate

0

我自己找到了答案。我使用了不同的ID,它工作完美。

// set the alarm manager 
     this.context = this; 

     Calendar updateTime = Calendar.getInstance(); 
     updateTime.set(Calendar.HOUR_OF_DAY, 21); 
     updateTime.set(Calendar.MINUTE, 16); 

     Calendar updateTime2 = Calendar.getInstance(); 
     updateTime2.set(Calendar.HOUR_OF_DAY, 21); 
     updateTime2.set(Calendar.MINUTE, 25); 

     Intent alarm = new Intent(MainActivity.this, AlarmReceiver.class); 

     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, alarm, 
       PendingIntent.FLAG_ONE_SHOT); 

     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC, updateTime.getTimeInMillis(), pendingIntent); 


     Intent alarm2 = new Intent(MainActivity.this, AlarmReceiver.class); 

     PendingIntent pendingIntent2 = PendingIntent.getBroadcast(MainActivity.this, 1, alarm2, 
       PendingIntent.FLAG_ONE_SHOT); 

     AlarmManager alarmManager2 = (AlarmManager) getSystemService(ALARM_SERVICE); 
     alarmManager2.set(AlarmManager.RTC, updateTime2.getTimeInMillis(), pendingIntent2); 

     lvCustomList = (ListView) findViewById(R.id.lv_custom_list); 
     showList(); 
相关问题