2012-03-09 48 views
1

所以我一直在試圖從我的活動中設置多個鬧鐘,這將會打電話給我的服務,該服務處理寫入文本文件。 但無論出於什麼原因,我根本無法讓它正常工作。在我最簡單的形式中,我有:設置多個鬧鐘來呼叫服務

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); 
     AlarmManager pm = (AlarmManager)getSystemService(ALARM_SERVICE); 
     PendingIntent myIntent = PendingIntent.getService(MyLifeActivity.this, 0, new Intent(MyDogsLifeActivity.this, TimerService.class), 0); 

     PendingIntent myIntent2 = PendingIntent.getService(MyLifeActivity.this, 0, new Intent(MyDogsLifeActivity.this, TimerService.class), 0); 




Calendar tomorrow = new GregorianCalendar(); 

      tomorrow.setTimeInMillis(System.currentTimeMillis()); 
      tomorrow.clear(); 
      tomorrow.set(2012,2,9,17,21); // set for today 3/9/2012 at 5:21 PM. 

     am.setRepeating(AlarmManager.RTC_WAKEUP, tomorrow.getTimeInMillis(), fONCE_PER_DAY, myIntent); 
     Toast.makeText(MyLifeActivity.this, "AM Set for "+ tomorrow.getTime() ,Toast.LENGTH_LONG).show(); 


     Calendar tomorrow1 = new GregorianCalendar(); 
     tomorrow1.setTimeInMillis(System.currentTimeMillis()); 
      tomorrow1.clear(); 
      tomorrow1.set(2012,2,9,17,22); // set for today 3/9/2012 at 5:22 PM. 


     pm.setRepeating(AlarmManager.RTC_WAKEUP, tomorrow1.getTimeInMillis(), fONCE_PER_DAY, myIntent2); 

     Toast.makeText(MyLifeActivity.this, "PM Set for "+ tomorrow1.getTime() ,Toast.LENGTH_LONG).show(); 

在這個最新的迭代中,只有最新的一個實際上會在正確的時間調用我的服務。我之前的一個簡單地被忽略。

理想情況下,我希望能夠在不同的時間從不同的定時器調用相同的服務。我知道上面的代碼並沒有完全做到這一點,但這只是一個測試,以瞭解這是如何工作的。但是,正如你所看到的那樣,它確實沒有。任何幫助將非常感激,因爲我一直在爲此奮鬥很長很長一段時間。

回答

1

在這個最新的調查中,只有最新的調查會在正確的時間調用我的服務。我之前的一個簡單地被忽略。

您只設置了一個鬧鐘。

報警由它們的PendingIntent唯一標識。 myIntentmyIntent2是相同的對象,因爲您使用的getActivity()Intent相同。

因此,您只能設置一個鬧鐘。如果你想要兩個警報,你需要兩個不同的對象。

據稱,爲第二個參數getActivity()(其中您有0)的兩個參數提供不同的值就足夠了,儘管我還沒有嘗試過。

另一種方法是將一些東西(除了一個額外的東西)添加到Intent對象之一(如動作字符串),以使其與等價視角不同。

+0

就是這樣!我沒有意識到我正在兩次同一個對象。將0更改爲其他內容確實有效。謝謝! – FirmwareEngineer 2012-03-10 14:45:39