AlarmManager的setExact()方法有什么替代方法吗?我想在确切的时间显示通知,但我不想将我的minSdkVersion提升到19.现在我使用的是AlarmManager的set()方法,但是将来安排的警报不会在确切的时间通知用户(但是cca 10分钟后)。现在我正在使用minSdkVersion 16和targetSdkVersion 21.我在Android开发者身上发现了一条说明:
注意:从API 19开始,传递给此方法的触发时间被视为不精确:警报将不会在此时间之前传递,但可能会延迟并在稍后传递。操作系统将使用此策略在整个系统中将警报“批处理”在一起,从而最大限度地减少设备需要“唤醒”并最大限度地减少电池使用的次数。一般而言,只要在将来安排的警报,就不会延迟在不久的将来安排的警报。 采用新的配料政策,交货订单保证不像以前那么强大。如果应用程序设置了多个警报,则这些警报的实际交付顺序可能与其请求的交付时间的顺序不匹配。如果您的应用程序具有强大的订购要求,则可以使用其他API来获取必要的行为;请参阅setWindow(int,long,long,PendingIntent)和setExact(int,long,PendingIntent)。 targetSdkVersion在API 19之前的应用程序将继续获得先前的警报行为:所有计划的警报都将被视为准确警报。
但是使用setExact()或setWindow()不是我的解决方案。 谢谢你的回复。
答案 0 :(得分:2)
检查当前的API级别 如果低于19,则使用set(),否则使用setExact()。
要检查您的操作系统版本,请使用以下内容:
在您的导入部分:
import android.os.Build;
在您的声明中:
protected static final int Build_Version = Build.VERSION.SDK_INT;
然后很容易检查
if(Build_Version < 19)
{
// Use set()...
}
else
{
// Use setExact()...
}