随着时间的流逝,越来越多的电池优化功能投入到Android系统中,其方法AlarmManager也发生了显着变化(以允许更宽松的计时)。但是,对于某些应用程序,仍然要求在所有Android版本上都尽可能精确。以下助手使用所有平台上最准确的方法来调度a 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); } }