Приемник вещания onReceive () вызывается несколько раз - PullRequest
7 голосов
/ 20 сентября 2011

У меня есть получатель boot_completed, который получает уведомление при загрузке.

    <receiver android:name=".BootCompletedReceiver">  
        <intent-filter>  
            <action android:name="android.intent.action.BOOT_COMPLETED" />  
        </intent-filter>  
    </receiver>

Но он вызывается несколько раз.Я запускаю таймер, а затем службу, которая приводит к нескольким таймерам, а затем служба сбрасывается и запускается снова.

Создание таймера, подобного этому.Это не повторяющийся таймер, не так ли?:

     private void setAlarm(Context context, long interval) {
        try {
            AlarmManager alarms = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            Intent intent = new Intent(RespondAlarmReceiver.ACTION_RESPOND_SMS);
            intent.putExtra("isChecking", true);
            PendingIntent alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);

            int alarmType = AlarmManager.ELAPSED_REALTIME_WAKEUP;
            long triggerAtTime = SystemClock.elapsedRealtime() + interval; //interval is 60,000
            alarms.set(alarmType, triggerAtTime, alarmIntent);
        }
        catch (Exception e) {
            Log.e(DEBUG_TAG, "Unable to set alarm");
        }

В качестве примечания, если кто-нибудь знает, как подключить отладчик Eclipse к загрузочному широковещательному приемнику или к работающей службе, это будетфантастика.

1 Ответ

4 голосов
/ 20 сентября 2011

Странно, что вы запускаете несколько таймеров.Попробуйте передать PendingIntent.FLAG_ONE_SHOT в качестве последнего аргумента внутри PendingIntent.getBroadcast

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