【发布时间】:2019-09-01 06:45:32
【问题描述】:
我在使用 AlarmManager 时遇到问题。我想在特定时间使用日历运行AlarmManager。
但是日历不起作用,AlarmManager 始终运行,无论从日历中花费的时间如何。
AlarmManager mAlarmManger = (AlarmManager) Objects.requireNonNull(activity).getSystemService(view.getContext().ALARM_SERVICE);
Intent intent = new Intent(activity, MyReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(activity, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.WEEK_OF_YEAR, Calendar.MONTH , Calendar.DAY_OF_MONTH, 11, 55, 0);
calendar.set(Calendar.AM_PM, Calendar.AM);
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O){
mAlarmManger.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
else{
mAlarmManger.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
AlarmManager 应该在每天上午 11:55 运行,但会在应用打开后立即运行。
【问题讨论】:
-
请不要编辑您所询问的错误。当您这样做时,您的问题将不再有意义,并且会让其他读者感到困惑和困惑。
-
仅供参考,存在严重缺陷的日期时间类,例如
java.util.Date、java.util.Calendar和java.text.SimpleDateFormat,现在已被 java.time 类所取代。大多数 java.time 功能在 ThreeTen-Backport 项目中被反向移植到 Java 6 和 Java 7。进一步适用于ThreeTenABP 中的早期 Android (How to use ThreeTenABP…。
标签: android calendar alarmmanager android-pendingintent