El uso de la radio en Android

1. Transmisión dinámica y transmisión estática

Transmisión estática

需要在AndroidManifest.xml文件中配置, Tiene 常驻性广播,无论程序启动与否,广播依然存在las características. Por ejemplo: podemos recibir la transmisión de arranque, y cuando recibimos esta transmisión, podemos ejecutar la lógica correspondiente en el método onReceive () para realizar la función de arranque.

Transmisión dinámica

La dirección de transmisión se designa y registra dinámicamente en el código, que tiene 非常驻型,广播会跟随程序的生命周期的结束而结束las características. Requieren especial atención son : necesidad onCreate()de registrarse, la onDestroy()cancelación.

 

2. Transmisión ordenada y transmisión estándar

Transmisión ordenada

Es una transmisión sincrónica. Después de que se envía la transmisión, solo un receptor de transmisión puede recibir el mensaje al mismo tiempo . Cuando se ejecuta la lógica de la transmisión, la transmisión continuará propagándose.

Transmisión estándar

Se transmite de manera asíncrona. Después de que se envía la transmisión, todos los receptores de transmisión reciben el mensaje casi al mismo tiempo . No hay ningún orden entre ellos y este tipo de transmisión no se puede truncar.

 

3. Transmisión global y transmisión local

Transmisión global:

Transmisión global significa que la transmisión puede ser recibida por cualquier otra aplicación, o puede recibirse desde cualquier otra aplicación.

Transmisión local:

La transmisión local es una transmisión que solo se puede entregar dentro de la aplicación. El receptor de transmisión solo puede recibir transmisiones internas y no puede aceptar transmisiones de otras aplicaciones.

 

4. Código

Preparación de parámetros

public static final String BROADCAST_ACTION="com.test.TestBroadcast";
private TestBroadcastReceiver receiver;
private TempReceiver receiver2;
private LocalBroadcastManager localBroadcastManager;

Registre la transmisión, aquí tomo dos receptores como ejemplo, preste atención para llamar oncreate

private void registerBroadcast(){
        IntentFilter filter=new IntentFilter();
        filter.addAction(BROADCAST_ACTION);
        receiver=new TestBroadcastReceiver();
        receiver2=new TempReceiver();
        localBroadcastManager=LocalBroadcastManager.getInstance(this);
        localBroadcastManager.registerReceiver(receiver,filter);
        localBroadcastManager.registerReceiver(receiver2,filter);
    }

remitente:

Haga clic en el evento de clic de un botón en la Actividad y escríbalo en el evento de clic. Elija diferentes tipos de transmisión según sus necesidades. Elijo la transmisión estándar local aquí.

Intent intent=new Intent(DATA_REFRESH_BROADCAST_ACTION);
//sendBroadcast(intent);//发送标准广播
//sendOrderedBroadcast(intent,null);//发送有序广播
localBroadcastManager.sendBroadcast(intent);//发送本地标准广播
//localBroadcastManager.sendBroadcastSync(intent);//发送本地有序广播
@Override
protected void onDestroy() {
     super.onDestroy();
     localBroadcastManager.unregisterReceiver(receiver);//注销本地广播
     localBroadcastManager.unregisterReceiver(receiver2);
}

 

receptor:

public class TestBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("receiver", "onReceive: "+"收到广播");
    }
}
public class TempReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d("receiver2", "onReceive: "+"收到广播");
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/hzkcsdnmm/article/details/107614229
Recomendado
Clasificación