ACTION_BATTERY_CHANGED disparando como um louco

Ok, estou trabalhando em um AppWidget que verifica o nível da bateria e o exibe em um TextView. Meu código fica assim:

public class BattWidget extends AppWidgetProvider {

private RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.battlayout);

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int appWidgetIds[]) {
    final int N = appWidgetIds.length;
    context.getApplicationContext().registerReceiver(this,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
    for (int i = 0; i < N; i++) {
        int appWidgetId = appWidgetIds[i];
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }
}

@Override
public void onReceive(Context context, Intent intent) {
    super.onReceive(context, intent);
    Log.d("onReceive", "Received intent " + intent);
    if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)) {
        Integer level = intent.getIntExtra("level", -1);
        views.setTextViewText(R.id.batteryText, level+"%");
        AppWidgetManager myAWM = AppWidgetManager.getInstance(context);
        ComponentName cn = new ComponentName(context, AirWidget.class);
        onUpdate(context, myAWM, myAWM.getAppWidgetIds(cn));
    }
}
}

Eu estou me preocupando, porque assim que solto o widget na tela inicial, ele dispara cerca de 100 daquelas chamadas de log por segundo, dizendo que está recebendo ACTION_BATTERY_CHANGED. Isso não deveria ser transmitido apenas para cada diminuição percentual? Na verdade, causou um atraso no meu lançador inteiro, tive que desinstalá-lo. Isso não pode estar certo.

questionAnswers(2)

yourAnswerToTheQuestion