我需要设置一些每周重复的警报,以便在用户上某个课程(这是一个学术应用程序)时自动将手机置于振动状态,然后在课程结束时重置音量。
我已经创建了警报,但如果用户禁用此功能,我必须有办法停用所有警报。我也知道我必须通过向 AlarmManager.cancel() 方法传递和意图相同的参数来做到这一点,但这里的问题是:
用户可以取消课程并注册课程(但不能直接在应用程序中),这会更新并反映在数据库中,只保留当前课程。因此,如果我为一个不再存在的类设置了警报,如果我无法复制 PendingIntent,我该如何取消它?
我在这里看到的一个解决方案是创建一个数据库表来跟踪当前警报,然后我可以完全控制它们,另一种方法是在更新类列表时取消并重置所有警报,但这样做需要公平时间,第三个但不太友好的选择是简单地等待用户启动手机,并在重置警报时设置我需要的警报(如果我在这个启动行为上错了,请纠正)。我是否应该尝试第四个选项,或者如果足够好,可以选择其中一个?