广播接收器onReceive()多次调用
我有一个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调试器附加到启动广播接收器或正在运行的服务上,那就太棒了。
奇怪的是你会得到多个定时器。 尝试通过PendingIntent.FLAG_ONE_SHOT
作为内的最后一个参数PendingIntent.getBroadcast
上一篇: Broadcast receiver onReceive() getting called multiple times