一. 广播机制简介
1. 标准广播(Normal broadcasts)
标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻受到这条广播消息。标准广播的效率比较高,但同时它是无法被截断的。
2. 有序广播(Ordered broadcasts)
有序广播则是一种同步执行的广播。同步简单来说就是必须一件事一件事做,等前一件做完了才能做下一件事。在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播消息,当这个广播接收器的逻辑执行完毕之后,广播才会继续传递。优先级高的广播接收器优先收到广播消息,并且可以切断正在传递的广播。
二. 接收系统的广播
Android 内置很多系统级别的广播,比如手机开机完成会发出一条广播,电池的电量发生变化会发出一条广播,时间或者时区发生改变会发出一条广播等等。
1. 动态注册
动态注册:在代码中注册;只有启动程序才能注册;最后要 unregisterReceiver;自由地控制注册与注销,灵活性。
(1)动态注册需要传入 BroadcastReceiver 和 IntentFilter 两个参数:
第一个参数:使用自定义类 extends BroadcastReceiver,并重写onReceive()
方法。
第二个参数:创建一个 IntentFilter 的实例,想监听什么广播就在 IntentFilter 中添加相应的 action。
最后要记得,动态注册的广播接收器一定都要注销才行。
...
IntentFilter filter = new IntentFilter();
filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");//当网络发生变化系统会发出一条值为 android.net.conn.CONNECTIVITY_CHANGE 的广播
receiver = new NetworkChangeReceiver();
registerReceiver(receiver, filter);
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);//一定要注销接收器
}
class NetworkChangeReceiver extends