2011-09-20 151 views
7

我有一個boot_completed接收器在啓動時收到通知。廣播接收器onReceive()多次調用

<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調試器附加到開機廣播接收器或正在運行的服務,這將是非常美妙的。

+0

內通過你解決了這個機會嗎? –

回答

4

奇怪的是,你會得到多個定時器啓動。嘗試通過PendingIntent.FLAG_ONE_SHOT作爲最後一個參數的PendingIntent.getBroadcast