2012-04-25 97 views
0

AlarmManager完美的作品時,我還沒有宣佈cancel但是當我宣佈cancel .. 這裏不火是代碼:如何在特定時間取消PendingIntent?

Calendar c= Calendar.getInstance(); 
       c.set(Calendar.HOUR_OF_DAY, 0); 
       c.set(Calendar.MINUTE, 37); 
       c.set(Calendar.SECOND, 0); 

      Toast.makeText(this, c.getTime().toString(), Toast.LENGTH_LONG).show(); 
     intent = new Intent(TestAlarm.this, TestAlarmService.class); 
     pi = PendingIntent.getService(TestAlarm.this, 1, intent, 0); 
     AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
     am.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), pi); 

cancel代碼:

c.add(Calendar.HOUR_OF_DAY, 0); 
     c.add(Calendar.MINUTE, 38); 
     c.add(Calendar.SECOND, 0); 
     PendingIntent pi1=PendingIntent.getService(TestAlarm.this, 1, intent, 0); 
     AlarmManager am1 = (AlarmManager) getSystemService(ALARM_SERVICE); 
     //stopService(intent); 
     am1.cancel(pi); 

現在在這裏我要開始我的AlarmManager 12:37和cancel在一兩分鐘後關閉...但是每當我使用cancel代碼AlarmManager永遠不會開火... 在此先感謝! :)

回答

0

改線am1.cancel(pi);am1.cancel(pi1); - 你撤銷原PendingIntent

此外,在取消代碼,你打電話c.add()(其添加到當前的日期/時間),而不是c.set() (明確設置下一個日期/時間)。通過調用c.add(Calendar.MINUTE, 38),您實際上將38分鐘添加到當前日曆中,而不是將時間設置爲12:38;

+0

謝謝@WATTO,但用它調用的服務不會停止!請告訴我如何知道PendingIntent是否被取消? – 2012-04-26 08:55:05

+0

您在取消代碼中使用'c.add()'而不是'c.set()'。這意味着它將當前時間增加38分鐘,而不是將當前時間設置爲「12:38」。看到我編輯的答案。 – wattostudios 2012-04-27 02:14:31

+0

感謝@WATTO糾正我...... :)但現在,如果我使用'setRepeating',它只會在點擊按鈕時被解僱......我的問題解決了。謝謝! – 2012-04-27 16:59:28

相關問題