Intereting Posts
Отклонить DatePickerDialog при нажатии кнопки возврата Ненавязчивое всплывающее окно, которое не блокирует перетаскивание n в Android Почему не остановить поток? Обнаружение из браузера, если определенное приложение установлено на Android Android Studio java.lang.NoSuchMethodError с импортированной библиотекой Декодировать штрих-код матрицы данных 2d в HTML / JavaScript (Android) Android EditText внутри ListView? PayPal, MPL и Android Android: dividerPadding не влияет Кодирование и мультиплексирование видео с использованием MediaCodec и MediaMuxer Как использовать поддержку FileProvider для обмена контентом с другими приложениями? Отладка отладки WebStorm не работает Как определить видимость входного метода Picker без разрешения Accessibility Получение ошибки запуска: не удалось подключиться к удаленной виртуальной машине. Время соединения истекло. Который пытается отладить мое приложение на моем устройстве в Android Изменение размера изображения JPEG в файловой системе

Является ли контекст приложения всегда одинаковым независимо от класса?

Я новичок во всей этой среде Android, и у меня, как правило, есть некоторые сомнения в том, что, возможно, вы можете рассмотреть очень простые знания и немного глупо. Я постараюсь изо всех сил объяснить, что у меня есть, и почему у меня есть это, чтобы заставить меня понять.

Я делаю приложение, в котором вы можете установить уведомления, чтобы напомнить вам классы ученого, которые вы хотите. Я сделал класс, который расширяет BroadcastReceiver, чтобы он мог сбросить все тревоги после того, как устройство загрузилось. У меня есть база данных, где я храню информацию об аварийных сигналах: класс, время его настройки и т. Д. Я извлекаю все аварийные сигналы и устанавливаю их в alarmManager следующим образом:

intent = new Intent(ctxt.getApplicationContext(), Notificacion.class); intent.putExtra("TAG", tag); intent.putExtra("SUBJECT", cursor2.getString(0)); intent.putExtra("AULA", cursor2.getString(1)); displayIntent = PendingIntent.getBroadcast(ctxt, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT ); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY*7, displayIntent); 

Ну, я думаю, это должно работать нормально, пока здесь. Проблема в том, что когда вы используете приложение и хотите установить уведомление, вы делаете это из класса «Schedule.class», поэтому у этого намерения будет такой контекст:

 Intent intent = new Intent(getApplicationContext(), Notification.class); PendingIntent pend = PendingIntent.getBroadcast(this, Integer.parseInt(tag), intent, PendingIntent.FLAG_UPDATE_CURRENT); 

В приложении вы можете удалить будильник, и для этого вам необходимо вызвать alarmManager.cancel (pend). Поэтому я сомневаюсь, что он сможет отменить его.

Если контексты отличаются друг от друга, он не найдет совпадение с ожидающим намерением, потому что он был установлен из контекста, который я получил в моем расширении BroadCastReceiver (ctxt), и будильник был установлен с контекстом, который я получил из Schedule.class ,

Итак, контекст приложения всегда один и тот же? Я знаю, что контекст задан для предоставления информации другим классам о том, что происходит, но я не уверен, будет ли фильтр Intent отличаться там, где был указан контекст.

Заранее спасибо!

Изучая документацию AlarmManager для метода отмены, который вы используете:

Public void cancel (операция PendingIntent)

Добавлено в API уровня 1

Удалите все аварийные сигналы с соответствующим намерением. Любая тревога любого типа, чье намерение соответствует этому (как определено filterEquals (Intent) ) , будет отменено.

Итак, в документации Intent.filterEquals сказано следующее:

Public boolean filterEquals (Intent other)

Добавлено в API уровня 1

Определите, совпадают ли два намерения для целей разрешения (фильтрации) намерений. То есть, если их действие, данные, тип, класс и категории одинаковы . Это не сравнивает лишние данные, включенные в намерения.

Я не могу думать о какой-либо причине, почему действие, данные, тип, класс или категория будут отличаться от одного явного намерения к другому (если, очевидно, вы не сделали этого, чтобы изменить эти вещи). Контексты, похоже, не соответствуют критериям соответствия, поэтому я думаю, вы можете быть достаточно уверены в том, что он будет отменен независимо от того, какой контекст использовался для его создания в первую очередь.