В странице API 4.4 Android Я читал:
Когда вы устанавливаете приложение targetSdkVersion на "19" или выше, аварийные сигналы которые вы создаете с помощью set() или setRepeating(), будет неточным.
[CUT]
Это неточное поведение пакетной обработки применяется только к обновленным приложениям. Если вы установите для 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);
}