在所有 Android 版本上建立準確的鬧鈴

隨著越來越多的電池優化逐漸進入 Android 系統,AlarmManager 的方法也發生了顯著變化(允許更寬鬆的時間)。但是,對於某些應用程式,仍需要在所有 Android 版本上儘可能準確。以下助手使用所有平臺上可用的最準確方法來安排 PendingIntent

public static void setExactAndAllowWhileIdle(AlarmManager alarmManager, int type, long triggerAtMillis, PendingIntent operation) {
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M){
        alarmManager.setExactAndAllowWhileIdle(type, triggerAtMillis, operation);
    } else if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
        alarmManager.setExact(type, triggerAtMillis, operation);
    } else {
        alarmManager.set(type, triggerAtMillis, operation);
    }
}