2014-01-31 58 views
0

我現在在做的是使用AlarmManager.SetAlarm(context)來啓用和AlarmManager.CancelAlarm(context)來取消它。我用它與IntentService如何取消並同時設置AlarmManager

我想要做的是取消從觸發IntentService報警,然後再設置它,如:

@Override 
protected void onHandleIntent(Intent intent) { 
    FooAlarmManager foo = new FooAlarmManager(); 
    foo.CancelAlarm(FooClass.this); 
    //Do some stuff 
    foo.SetAlarm(FooClass.this); 
} 

爲什麼我這樣做?因爲FooAlarmManager內我收到的時間從一個靜態類,如:

public void SetAlarm(Context context) { 
     Integer minutes = StaticValuePass.getMins(); 
     AlarmManager am = (AlarmManager) context 
       .getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(context, FooAlarmManager.class); 
     PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0); 
     am.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
       System.currentTimeMillis(), 1000 * minutes*60, pi); 
} 

,我來自onHandleIntent()設定的時間的價值。所以基本上我在onHandleIntent()內做了一些檢查,並確定下一次報警的時間。

不幸的是,我上面的代碼不起作用,原因是當你使用setAlarm()它實際上立即調用onHandleIntent()

所以我有兩個問題,在這種情況下, 1)我可以防止setAlarm()調用onHandleIntent()時,它是第一次創建?

2)(假設上述不起作用)如何更改報警間隔時間?

回答