2011-09-20 36 views
7

Tôi có một bộ thu khởi động đã được nhận thông báo khi khởi động.Bộ thu phát sóng onReceive() được gọi nhiều lần

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

Nhưng dường như nó được gọi nhiều lần. Tôi bắt đầu một bộ đếm thời gian, và sau đó một dịch vụ, dẫn đến nhiều bộ hẹn giờ, và sau đó dịch vụ được đặt lại và chạy lại.

Tạo bộ hẹn giờ như thế này. Đây không phải là một bộ đếm thời gian lặp lại, là nó ?:

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

Là một mặt lưu ý, nếu ai biết làm thế nào để đính kèm các debugger Eclipse với máy thu phát sóng Boot-up hoặc một dịch vụ đang chạy, đó sẽ là tuyệt vời.

+0

Bởi cơ hội nào bạn giải quyết này? –

Trả lời

4

Thật lạ khi bạn bắt đầu có nhiều bộ tính giờ. Hãy thử qua PendingIntent.FLAG_ONE_SHOT như là đối số cuối cùng bên trong PendingIntent.getBroadcast

Các vấn đề liên quan