2013-09-28 54 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