【发布时间】:2013-11-07 16:38:15
【问题描述】:
在Android 4.4 APIs page 我读到:
当您将应用的 targetSdkVersion 设置为“19”或更高时,警报 您使用 set() 或 setRepeating() 创建的结果将是不准确的。
[剪切]
这种不精确的批处理行为仅适用于更新后的应用。如果你有 将 targetSdkVersion 设置为“18”或更低,您的警报将继续 在 Android 4.4 上运行时,其行为与之前版本一样。
在我的应用程序中,我需要准确的时间警报,并且我将 targetSdkVersion 更新为“19”。以下代码是否正确?此外,如果我在以前版本的手机中将 targetSdkVersion 设置为“19”,“旧”方法 AlarmManager.set 是否会继续以相同的方式工作?
private void setAlarm (long ms){
final AlarmManager am = (AlarmManager) mCtx.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this, BroadcastReceiverAlarm.class);
PendingIntent pi = PendingIntent.getBroadcast(this, ALARM_REQUEST_CODE, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT<Build.VERSION_CODES.KITKAT) {
am.set(AlarmManager.RTC, ms, pi);
} else {
setAlarmFromKitkat(am, ms, pi);
}
}
@TargetApi(19)
private void setAlarmFromKitkat(AlarmManager am, long ms, PendingIntent pi){
am.setExact(AlarmManager.RTC, ms, pi);
}
【问题讨论】:
标签: android alarmmanager android-alarms android-4.4-kitkat