我有一个代码,其中警报管理器启动服务。我必须使用第二个闹钟在指定时间内取消它。我看过的解决方案并不是单一的。我的代码如下:无法使用Android中的AlarmManager停止服务
void startAtInterval(int fromTime, int fromTimeMinute, int toTime, int toTimeMinute, int id1, int id2) {
// start alarm
AlarmManager alarmMgr = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
PendingIntent alarmIntent = PendingIntent.getService(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, fromTime);
calendar.set(Calendar.MINUTE, fromTimeMinute);
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
// stop alarm
AlarmManager alarmMgr1 = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
PendingIntent alarmIntent1 = PendingIntent.getService(getApplicationContext(), 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Calendar calendar1 = Calendar.getInstance();
calendar1.setTimeInMillis(System.currentTimeMillis());
calendar1.set(Calendar.HOUR_OF_DAY, toTime);
calendar1.set(Calendar.MINUTE, toTimeMinute);
alarmMgr1.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar1.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent1);
stopService(intent);
alarmMgr1.cancel(alarmIntent1);
}
我用FLAG_UPDATE_CURRENT
和FLAG_CANCEL_CURRENT
。我也试图stopservice
,因为我在我的代码中显示。我从配置屏幕传递时间。我知道它是有效的,因为第一次警报总是被解雇。
当我使用相同的NDX在两个报警器(启动和停止)第一永远不会被解雇。为了防万一,我做了另一次尝试,但没有奏效。但是,如果我改变数字,首先会被解雇。 –
@NachoC。 ,第一个是第一个。那么,它会被取消吗? – Vyacheslav
@NachoC。 ,更新了一点 – Vyacheslav