Android 4.4 API ページで、次のように読みました。
アプリの 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);
}