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: "+"收到广播");
}
}