0
private void scheduleAlarms(Context context) {
        AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
        Intent intentOnAlaramReceiver = new Intent(context, OnAlarmReceiver.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentOnAlaramReceiver, 0);

        String listOfIntervalConnection = Utils.getStringFromProperties(context, Properties.SP_LIST_OF_ENABLE_INTERVAL_CONNECTIONS, Properties.ENABLE_AFTER);
        long enableAfter = DateUtils.MINUTE_IN_MILLIS * Long.parseLong(listOfIntervalConnection);

        alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + enableAfter, enableAfter, pendingIntent);
    }

そして私は次のようにアラームをキャンセルしようとします

 AlarmManager alarmManager = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
            Intent intentOnAlaramReceiver = new Intent(context, OnAlarmReceiver.class);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intentOnAlaramReceiver, 0);

            alarmManager.cancel(pendingIntent);

しかし、時々キャンセルされることがありますが、まだ機能しています。なぜ、どのように?私に何ができる?

4

2 に答える 2

1

サービスを開始するときとキャンセルするときに、PendingIntent で Intent の異なるインスタンスを使用しています。

サービス インテントをインスタンス変数として設定し、サービスの開始とキャンセルの両方で使用します。

于 2013-04-04T08:03:41.753 に答える