Unit5:广播
静态广播
1.定义
public class TestBroadCast extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "静态注册", Toast.LENGTH_SHORT).show();
}
}
2.注册
<receiver
android:name=".TestBroadCast"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
3.发送
Intent intent = new Intent();
intent.setAction("HELLO");
intent.addFlags(0x01000000); // Android 8.0之后的变化,需要添加之后,静态才能发送广播
sendBroadcast(intent);
动态广播(有序广播)
1.定义
// 定义接收器
broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "动态注册", Toast.LENGTH_SHORT).show();
}
};
2.注册
// 注册
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("HELLO");
registerReceiver(broadcastReceiver, intentFilter);
3.发送
Intent intent = new Intent();
intent.setAction("HELLO");
sendOrderedBroadcast(intent,null); // 有序广播的发送
本地广播
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this); // 开启本地广播管理
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("TEST");
localBroadcastManager.sendBroadcast(intent);
}
});
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("TEST");
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "received", Toast.LENGTH_SHORT).show();
}
};
localBroadcastManager.registerReceiver(receiver,intentFilter);

浙公网安备 33010602011771号