我有一個代碼,其中警報管理器啓動服務。我必須使用第二個鬧鐘在指定時間內取消它。我看過的解決方案並不是單一的。我的代碼如下:無法使用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