Android 在特定时间呼叫AlarmManager
我想每天早上6点启动闹钟。我写了下面的代码,但我的报警呼叫后立即呼叫服务,而不是保留和设置为上午6点。我有什么问题?我在广播接收器中调用此方法,并每秒重复调用!如果我把我的代码改为下面的代码,我的闹钟就会准时正常工作Android 在特定时间呼叫AlarmManager,android,date,broadcastreceiver,alarmmanager,Android,Date,Broadcastreceiver,Alarmmanager,我想每天早上6点启动闹钟。我写了下面的代码,但我的报警呼叫后立即呼叫服务,而不是保留和设置为上午6点。我有什么问题?我在广播接收器中调用此方法,并每秒重复调用!如果我把我的代码改为下面的代码,我的闹钟就会准时正常工作 使用下面的代码。它会起作用的 private void setSingleExactMonitoringSchedule() { final AlarmManager alarmManager = (AlarmManager) KITILApplication.g
使用下面的代码。它会起作用的
private void setSingleExactMonitoringSchedule() {
final AlarmManager alarmManager = (AlarmManager) KITILApplication.getappContext().getSystemService(Context.ALARM_SERVICE);
Date date = new Date();
Log.e("MonitoringScheduleDate:", "Broadcast:" + date.toString());
Intent monitoringScheduleIntent = new Intent(KITILApplication.getappContext(), AlarmManagerBroadcastReciever.class);
monitoringScheduleIntent.putExtra(AppConstant.REQUEST_CODE_RECEIVER, AppConstant.REPEAT_GET_SCHEDULE);
PendingIntent monitoringSchedulePI = PendingIntent.getBroadcast(KITILApplication.getappContext(), OfflineData.getUniqueIdMonitoringSchedule(KITILApplication.getappContext()), monitoringScheduleIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,6);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, 1);/*call from next day*/
long trigger=calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()
, AlarmManager.INTERVAL_DAY, monitoringSchedulePI);
}
private void setSingleExactMonitoringSchedule() {
final AlarmManager alarmManager = (AlarmManager) KITILApplication.getappContext().getSystemService(Context.ALARM_SERVICE);
Date date = new Date();
Log.e("MonitoringScheduleDate:", "Broadcast:" + date.toString());
Intent monitoringScheduleIntent = new Intent(KITILApplication.getappContext(), AlarmManagerBroadcastReciever.class);
monitoringScheduleIntent.putExtra(AppConstant.REQUEST_CODE_RECEIVER, AppConstant.REPEAT_GET_SCHEDULE);
PendingIntent monitoringSchedulePI = PendingIntent.getBroadcast(KITILApplication.getappContext(), OfflineData.getUniqueIdMonitoringSchedule(KITILApplication.getappContext()), monitoringScheduleIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,6);
calendar.set(Calendar.MINUTE,0);
long trigger=calendar.getTimeInMillis();
if (Build.VERSION.SDK_INT >= 23) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, trigger, monitoringSchedulePI);
} else if (Build.VERSION.SDK_INT >= 19) {
alarmManager.setExact(AlarmManager.RTC_WAKEUP,trigger, monitoringSchedulePI);
}else{
alarmManager.set(AlarmManager.RTC_WAKEUP, trigger, monitoringSchedulePI);
}
}
private void setSingleExactMonitoringSchedule() {
final AlarmManager alarmManager = (AlarmManager) KITILApplication.getappContext().getSystemService(Context.ALARM_SERVICE);
Date date = new Date();
Log.e("MonitoringScheduleDate:", "Broadcast:" + date.toString());
Intent monitoringScheduleIntent = new Intent(KITILApplication.getappContext(), AlarmManagerBroadcastReciever.class);
monitoringScheduleIntent.putExtra(AppConstant.REQUEST_CODE_RECEIVER, AppConstant.REPEAT_GET_SCHEDULE);
PendingIntent monitoringSchedulePI = PendingIntent.getBroadcast(KITILApplication.getappContext(), OfflineData.getUniqueIdMonitoringSchedule(KITILApplication.getappContext()), monitoringScheduleIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY,6);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, 1);/*call from next day*/
long trigger=calendar.getTimeInMillis();
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis()
, AlarmManager.INTERVAL_DAY, monitoringSchedulePI);
}