广播分为两种,标准广播和有序广播
1.标准广播
广播发出后所有接受器会在同一时间接收到这条广播的消息,无先后顺序。无法被截断。
2.有序广播
广播发出后,同一时间只有一个接收器可以接收到消息,有序,且可以被前面接受器的广播拦截。
广播监听器
(1)动态注册——代码中注册。
需要注意的是: 动态注册广播监听器有一个缺点,注册逻辑写在onCreate()中,即只能在app启动后才可以接收到广播。
第一步、创建一个MyBrodestReciver广播接受器
public class MyBrodestReciver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
//判断action是否为添加的action,如果是则toast
String action = intent.getAction();
if(action.equals("one")){
Toast.makeText(context,"发送了一个广播",Toast.LENGTH_LONG).show();
}
}
}
第二步、添加一个action
//第二步.添加一个action
//新建intentFilter对象 通过addAction添加广播
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("one");
第三步、注册广播
//第三步.注册广播
MyBrodestReciver myBrodestReciver = new MyBrodestReciver();
registerReceiver(myBrodestReciver,intentFilter);
第四步、发送广播
//使用点击事件发送一个广播
Button send = findViewById(R.id.button);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setAction("one");
sendBroadcast(intent);
}
});
(2)静态注册——AndroidManifest中注册。
新建一个BroadCastReceiver
右击包名->new->other->BroadCastReceiver
会在Mainifiest中自动添加广播代码。
Exported:是否允许接收到本程序以外的广播;
Enable:是否启用广播接受器
在Mainifiest中添加需要获取的权限。
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
//接收系统开机广播
需要注意的是: onReceive()方法中不可以添加过多的逻辑或进行耗时操作。
- Broadcast——本地广播
已被废弃,替换为LiveData