我現在在做的是使用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)(假設上述不起作用)如何更改報警間隔時間?