Intereting Posts
Файл res / drawable / abc_ic_ab_back_material.xml из ресурса ресурса ID # 0x7f020016 Как закрепить файлы в android Перехватить входящие флеш-сообщения на мобильном устройстве Android Разный выход в Android 4.1 Маршеллирование почтового отправления Есть ли служба тестирования Android, которую я могу использовать, чтобы дать мне реальную отладочную информацию с устройства? Почему я должен подписывать APK приложения до выпуска Как упаковать и получить доступ к дополнительным файлам внутри моего apk Ограничивает ли приложение приложение Google Play Store конкретными странами, также запрещает публичный бета-доступ? Как запустить или запустить приложение внутри фрагмента Android? Как я могу создать программу «Launcher» программно? Запуск Android Game Development Где «адаптер» подходит для MVP (пассивный просмотр)? Android и поддержка нескольких экранов Эмулятор Kindle Fire больше не поддерживается

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

Я новичок во всей этой среде 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

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

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