一、自定义广播的发送与接收
Android系统中自带了很多广播,如果需要监听某个广播只需创建对应的广播接收者即可。
当这些系统级别的广播事件不能满足实际需求时,我们还可以自定义广播。

二、案例——电台与收音机
接下来通过一个“电台与收音机”的案例来演示自定义广播的发送与接收过程。

布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:onClick="send"
android:text="电台发送自定义广播" />
</RelativeLayout>
MyBroadcastReceiver.java
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i("MyBroadcastReceiver", "自定义的广播接收者,接收到了广播事件");
Log.i("MyBroadcastReceiver",intent.getAction());
}
}
MainActivity.java
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void send(View view) {
Intent intent = new Intent();
// 定义广播的事件类型
intent.setAction("www.itcast.cn");
// 发送广播
sendBroadcast(intent);
}
}
三、广播的类型
1、无序广播
无序广播是一种完全异步执行的广播,在广播发出去后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息。当发送的是无序广播时,广播接收器之间是没有先后顺序的。

2、有序广播
有序广播则是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条消息。当发送有序广播时,广播接收器是有先后顺序的,并且可以被拦截。


