Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


BroadcastReceiver como clase interna

Sé que BroadcastReceiver no se puede utilizar si se define como clase interna de la actividad. Pero me pregunto por qué? ¿Es porque el sistema tendría que instanciar un objeto de Activity grande para tener instanciado una instancia de receptor?

One Solution collect form web for “BroadcastReceiver como clase interna”

… porque el sistema tendría que instanciar un objeto de actividad grande para sólo instanitated una instancia de recevier?

Yup, al igual que cualquier otra clase interna no estática. Tiene que obtener una instancia de la clase externa de algún lugar (por ej., Instanciando o por algún otro mecanismo) antes de que pueda crear instancias de la clase interna (no estática).

Los receptores de difusión global que se invocan a partir de intentos en el archivo de manifiesto que serían instanciados automáticamente por el sistema no tienen tal instancia externa que usar para crear una instancia de la clase interna no estática del receptor de difusión. Esto es independiente de lo que es la clase exterior, Actividad o no.

Sin embargo, si está utilizando un receptor como parte del trabajo con una actividad, puede instanciar manualmente un receptor de emisión en la actividad (mientras que uno de los retornos de llamada de la actividad, tiene una instancia de la clase externa con la que trabajar) Luego registre / cancele el registro según sea apropiado:

 public class MyActivity extends Activity { private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(...) { ... } }); ... public void onResume() { super.onResume(); .... registerReceiver(myBroadcastReceiver, intentFilter); } public void onPause() { super.onPause(); ... unregisterReceiver(myBroadcastReceiver); } ... } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.