背景
我正在为Android开发一个应用程序,它围绕着一个用户指定时间的闹钟进行。我的意图是让它用于叫醒人们在早上(以及接下来的一天 - 即重复闹钟)。当闹钟响起时,它会调用一个具有几个选项(如贪睡)的
Activity
。我已经把所有这些都搞定了,但我遇到了一个问题。问题
我正在使用
AlarmManager
来处理我的闹钟需求。然而,该类有一些奇怪的问题(在我看来)。有两种建议处理设置闹钟时间的方式,即setInexactRepeating
和setRepeating
。这些函数的问题是:
setInexactRepeating
不太准确。我的测试显示它大约在指定时间激活,这也是文档所指示的,尽管有些含糊不清:闹钟将不会在此之前响起,但是在闹钟间隔的几乎整个延迟时间内可能会存在一个延迟。
我的测试显示通常会有5分钟左右的延迟。在这个答案中,用户平均延迟大约为12分钟。当然,对于一个旨在在指定时间叫醒人们的系统来说,这是无法接受的。
setRepeating
可以在指定时间触发。但是文档规定,从API 19开始,所有重复的闹钟都是不准确的。这正是我不想要的。从API 19开始,所有重复的闹钟都是不准确的。因为此方法自API 3以来就可用,所以您的应用程序可以安全地调用它,并确保在当前版本和旧版本的Android上获得类似的行为。
有一个setExact
方法,但这个方法太具体了。此外,它不给我设定特定的时间间隔(以便每天重复闹钟)。编辑:尝试使用setExact
后,我发现这需要我升级到API 19(当前为15),这是我想避免的。
问题
我是否在使用错误的类别?对我来说,它似乎应该是一个合法的用法,但是阅读文档让我感到困惑。也许还有另一个更适合这个系统的类别吗?
setExact
需要将 API 升级至 19,这是我想避免的。难道没有其他选项可以使用此类或其函数吗? - Bonoandroid.os.Build.VERSION
。如果它等于或高于19
,请使用exactRepeating
,如果低于,请使用setRepeating
。希望这能帮到您(目前为止)。 - Bono