2011-09-20 16 views
7

Mam odbiornik boot_completed, który zostanie powiadomiony podczas rozruchu.Odbiornik transmisji onReceive() jest wywoływany wiele razy

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

Ale wydaje się, że zostanie wywołany wiele razy. Zaczynam timer, a następnie usługę, która prowadzi do wielu timerów, a następnie usługa zostaje zresetowana i działa ponownie.

Tworzenie timera w ten sposób. To nie jest powtarzalnym timer, to jest ?:

 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"); 
     } 

Na marginesie, jeśli ktoś wie, jak dołączyć debugera Eclipse do odbiornika transmisji rozruchowym lub do przebiegu, to byłoby fantastyczne.

+0

przypadkiem Ci rozwiązać ten? –

Odpowiedz

4

To dziwne, że zacząłeś używać wielu timerów. Spróbuj przejściu PendingIntent.FLAG_ONE_SHOT jako ostatni argument wewnątrz PendingIntent.getBroadcast

Powiązane problemy