Necesito registrar un receptor. He estado usando el siguiente patrón:¿Patrón correcto para registrar un receptor?
@Override
protected void onResume() {
super.onResume();
registerReceiver(myReceiver, new IntentFilter(...));
}
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(myReceiver);
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
Estoy recibiendo informes de fallos de mercado sobre mi unregisterReceiver() llamada:
java.lang.IllegalArgumentException: Receiver not registered
pensé que esto no podría ser posible, pero parece que esto es el patrón correcto en su lugar:
private Intent mIntent;
@Override
protected void onResume() {
super.onResume();
if (mIntent == null) {
mIntent = registerReceiver(myReceiver, new IntentFilter(...));
}
}
@Override
protected void onPause() {
super.onPause();
if (mIntent != null) {
unregisterReceiver(myReceiver);
mIntent = null;
}
}
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
...
});
¿Es el anterior el patrón correcto? Supongo que es posible que el registro falle, y tenemos que mantener el resultado de registerReceiver() y registrarlo en Pause() antes de realizar la llamada para anular el registro()?
Gracias
estoy basando el cambio fuera de esta pregunta: Problem with BroadcastReceiver (Receiver not registered error)
Yo sólo he visto el primer patrón anterior, no uno donde se comprueba la respuesta de la intención - cualquier aclaración sería genial.
Ok gracias por esto, tiene sentido. – user291701