Android - BroadcastReceiver никогда не вызывался из AlarmManager - PullRequest
0 голосов
/ 26 марта 2012

У меня проблема с моим BroadcastReceiver.По сути, у меня в службе есть функция, которую я хочу вызывать каждые, скажем, 2 часа.Поэтому я использовал AlarmManager и Broadcast приемник, чтобы сделать это, однако, похоже, что приемник никогда не вызывается.Мой код:

в методе onCreate службы:

Intent intent5 = new Intent("MYINTENT");
sender2 = PendingIntent.getBroadcast(this, 192838, intent5, PendingIntent.FLAG_UPDATE_CURRENT);
am2 = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE);
am2.setRepeating(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis(), 1000*60*60*2, sender2);

BroadcastReceiver connectionReceiver = new BroadcastReceiver() {
  @Override
  public void onReceive(Context context, Intent intent) {
       check();
    }
  };

  registerReceiver(connectionReceiver, new IntentFilter("MYINTENT"));

, а затем есть метод check ()

public static void check(){
    //some code
}

Я также пытался создать класс, расширяющийBroadcastReceiver, зарегистрировав его в манифесте и т. Д., И он вызван, но затем я получил NullPointerException, вызывающий метод check () изнутри BroadcastReceiver.

1 Ответ

0 голосов
/ 26 марта 2012

Я также пытался создать класс, расширяющий BroadcastReceiver, регистрируя его в манифесте и т. Д., И он вызывался, но затем я получил NullPointerException, вызывающий metheod службы () изнутри BroadcastReceiver.

Вернитесь к этому решению и исправьте NullPointerException. Скорее всего, Android прекратил процесс вашего приложения с именем registerReceiver() (например, пользователь нажал HOME и не вернулся к процессу). check() - что бы это ни было - должно предполагать, что это совершенно новый процесс. Ваше NullPointerException, вероятно, происходит от check(), когда вы думаете, что что-то должно быть инициализировано, а это не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...