在Android 4.4 APIs页面中,我读到:
在我的应用程序中,我需要准确的时间闹钟,并将targetSdkVersion更新为“19”。以下代码是否正确?另外,如果我在具有旧版本的手机上将targetSdkVersion设置为“19”,那么“旧”方法AlarmManager.set会以相同的方式工作吗?当你将应用程序的targetSdkVersion设置为"19"或更高版本时,使用set()或setRepeating()创建的闹钟将变得不精确。
[CUT]
此不精确批处理行为仅适用于更新后的应用程序。如果将targetSdkVersion设置为"18"或更低版本,则在运行Android 4.4时,您的警报将继续像以前的版本一样运行。
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);
}