2013-09-28 98 views
1

我有以下情況。如何取消警報?

我需要設置許多警報才能在不同的特定日期開始相同的活動。

爲了做到這一點,我顯然使用AlarManager。

由於給予AlarmManager的PendingIntents都是等價的,爲了讓Android創建它們(而不僅僅是1個),我使用不同的requestCode來區分它們。

所有這些工作正常,所有報警正確創建。

問題是,有時候我必須取消它們!

如果我沒有用同樣的requestCode來做,AlarmManager不會取消它們。

這是非常困難的檢索代碼原來requestCode,因爲它們是在不同momentd /天運行時創建...

如何應對這種情況的任何建議?

回答

1

您有正確的方法,因爲我知道取消警報的唯一方法是取消與requestCode相同的未決意圖,但是您的問題是檢索運行時發出的相同請求代碼。你將不得不通過SQLite或者共享偏好來存儲這些代碼,以便讓它們存儲在設備上,然後根據需要檢索它們。或者,您可以通過requestCode作爲bundle的意圖,然後在它關閉後立即取消,或者在您選擇的報警生命週期過後立即取消。希望這有所幫助。

+0

感謝kabuto178恐怕我需要將它們存儲在某個地方...我希望有人有某種魔法可以避免這種... :-) –

+0

由於警報似乎是一個重要的API使用,我會強烈建議使用SQLite,因爲它會更容易玩,並會更清潔,並可以保存相當數量的警報。 –

+0

您不希望按照我的建議在意圖中使用'SQLite'或傳遞請求代碼? – kabuto178