Tengo la necesidad de crear un receptor de transmisión personalizado en el evento onCreate de una actividad y obviamente necesito cancelar el registro del receptor de transmisión en el evento onDestroy de la actividad.
Para mayor claridad, este es un fragmento del código que uso
public class AnActivity extends Activity {
private ResponseReceiver receiver;
public class ResponseReceiver extends BroadcastReceiver {
public static final String ACTION_RESP =
"mypackagename.intent.action.MESSAGE_PROCESSED";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Start a dialogue if message indicates successfully posted to server
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
IntentFilter filter = new IntentFilter(ResponseReceiver.ACTION_RESP);
filter.addCategory(Intent.CATEGORY_DEFAULT);
receiver = new ResponseReceiver();
registerReceiver(receiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
He leído que los eventos onPause / onResume y onStart / onStop para la actividad también deben registrar y anular el registro del receptor de transmisión.
Tengo muchas ganas de entender cuál se considera la mejor práctica para esto y por qué.
onDestroy()
se llama, el receptor no escuchará más eventos.