Tengo un BroadcastReceiver
para un uso único.Anular el registro del receptor de difusión de Android en onReceive lanza "Receptor no registrado"
Lo estoy registrando en una Actividad. No puedo poner el unregisterReceiver()
en porque tiene que seguir funcionando incluso cuando la actividad está en pausa o destruida.
Quiero que el BroadcastReceiver para anular el registro en sí cuando se hace, algo como esto:
public class SmsReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
// do some code..
context.unregisterReceiver(this)
}
}
pero causa una excepción: Receiver not registered.
Un objeto BroadcastReceiver sigue las mismas reglas de recolección de basura que cualquier otro objeto. No hay una "instancia desechable" especial. Hacer referencia a 'this' en' onReceive' da el mismo resultado que una referencia desde cuando se creó el objeto (pruébelo). La documentación habla de que se ha matado al * proceso * del receptor, no a nada en el nivel del objeto receptor. – blahdiblah