0

繰り返しアラームを設定していますが、キャンセルしてもキャンセルされないという問題があります (これは Log.v() で確認しています)

これがアラームの作成方法です(IntentServiceで)

AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intentToFire = new Intent(CAlarmReceiver.ACTION_CHECK_ALARM);
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);

private void rescheduleAlarm() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, TIME_TO_REFRESH);
    alarms.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), CHECK_TIME,   alarmIntent);

}

次に、アクティビティで、クリックするとボタンがオンになり、このコードが呼び出されます

private OnClickListener btnCloseApplicationListener = new OnClickListener() {
    public void onClick(View v) {
        intentToCancel = new Intent(CAlarmReceiver.ACTION_CHECK_ALARM);
        alarmIntent = PendingIntent.getBroadcast(v.getContext(), 0, intentToCancel, 0);
        alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarm.cancel(alarmIntent);
        finish();
    }
};

finish() が実行された後、DDMS ウィンドウにログが表示され続けます。どうすればキャンセルできますか?前もって感謝します!

4

1 に答える 1

1

インテントに同じコンテキストを使用してみてください。意図は一致する必要があり、問題は、アラームをキャンセルしようとするときに別のコンテキストを使用していることだと思います。

alarmIntent = PendingIntent.getBroadcast(this, 0, intentToCancel, 0);
于 2011-07-11T09:18:18.753 に答える