2015-11-06 73 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(); 
相關問題