我正在尝试基于UnixTimestamp设置警报,但是应用程序总是在设置时间之前发送警报,例如,我在1563551362上设置了警报,现在的问题是我没有在1563551362上收到警报,但是我收到了警报在我设置它之前,有人可以帮忙吗?
我尝试了以下代码来设置警报:
private void setNotificationAlarm(long unixTimeStamp){
AlarmManager alarmManager = (AlarmManager) getContext().getSystemService(ALARM_SERVICE);
Intent intent = new Intent(getContext(), broadcastReciever.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(), 0, intent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, broadcastReciever, pendingIntent);
}
答案 0 :(得分:0)
来自API:
从API 19(Build.VERSION_CODES.KITKAT)开始,警报传递是 不精确:操作系统将转移警报,以最大程度地减少唤醒和 电池使用。有新的API支持需要的应用程序 严格的交货保证;参见setWindow(int,long,long, android.app.PendingIntent)和setExact(int,long, android.app.PendingIntent)。 targetSdkVersion为 API 19之前的版本将继续在中看到以前的行为
因此您可以使用:
alarmManager.setExact(AlarmManager.RTC_WAKEUP, unixTimeStamp, pendingIntent);
但是API警告:
仅对精确时间交付有强烈需求的警报 (例如闹钟在要求的时间响起) 安排准确。强烈建议不要使用应用程序 不必要的精确警报,因为它们降低了操作系统的最小化能力 电池使用