一、广播的定义
广播机制:用来收发消息的组件,分为收发两部分。
二、广播的创建
public class MyBroadcast extends BroadcastReceiver {//编写BroadcastReceiver的实现类
@Override
public void onReceive(Context context, Intent intent) {//收到广播时调用
Toast.makeText(context,intent.getAction(),Toast.LENGTH_SHORT).show();
}
}
三、广播的注册
静态注册(不推荐)
创建广播后清单文件中编写
<receiver android:name=".ThirdBroadcast"
android:exported="true"//是否接收其他应用程序的广播
android:enabled="true"//是否使用该广播接收器
>
</receiver>
注:发送广播前需要在意图中添加以下内容才可以用,但是本地广播不能用静态广播
intent.setComponent(new ComponentName("com.example.mybroadcast","com.example.mybroadcast.ThirdBroadcast"));
//第一个参数为广播的包名,第二个参数为广播的路径
动态注册
IntentFilter intentFilter = new IntentFilter("myOrder");//设置动作过滤,表示广播接收的信息类型
MyBroadcast myBroadcast =new MyBroadcast();
registerReceiver(myBroadcast,intentFilter);//动态注册广播
unregisterReceiver(myBroadcast);//取消注册的广播
四、广播的发送
发送标准广播
Intent intent = new Intent("myOrder");//指定发送的广播动作
sendBroadcast(intent);//发送广播
发送有序广播
sendOrderedBroadcast(intent,null);//发送有序广播,第二个参数为权限的描述
广播接收器按照注册时给intentFilter指定的优先级顺序来接收广播,优先级高的先接收到广播。
优先级高的广播可以使用 abortBroadcast() 来中断广播。
发送本地广播
localBroadcastManager=LocalBroadcastManager.getInstance(this);//获取本地广播管理者对象
使用本地广播管理者的发送广播,注册广播,取消注册的广播的方法就可实现在程序内部收发广播。弊端就是本地广播管理者不能发送有序广播。