知识点目录
知识点回顾
在网络通信里,在一个IP网络范围中,最大的IP地址是被保留作为广播地址来使用的。例如:某个网络的IP范围是192.168.0.XXX,子网掩码是255.255.255.0,那么这个网络的广播地址就是192.168.0.255。广播数据包会被发送到同一网络上的所有端口,在该网络中的每台主机都会接收到这个广播。
为了方便进行系统级别的消息通知,Android也引入了一套类似的广播消息机制。
5.1 广播机制
Android中的广播主要分为两种类型:标准广播和有序广播。
标准广播
完全异步执行!!!在广播发出后,所有的广播接收器几乎在同一时刻接受到这条广播信息。
特点:广播效率高、没有任何先后顺序、无法被拦截
有序广播
同步执行!!!广播发出后,同一时刻只会有一个广播接收器收到这条广播消息,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。
特点:广播接收器有先后顺序,优先级高的广播接收器先收到广播消息,可以被优先级高的广播接收器拦截。
5.2 接收系统广播
Android内置了很多系统级别的广播:
-
开机广播
-
电池电量发生变化广播
-
时间或时区发生改变广播
-
等等。。。
5.2.1 动态注册监听网络变化
广播接收器可以自由注册自己感兴趣的广播进行注册。注册的方式有两种:
-
代码中注册(也称为动态注册)
-
AndroidManifest.xml中注册(也称为静态注册)
动态注册监听网络变化的步骤如下:
-
创建一个广播接收器,继承BroadcastReceiver,重写onReceive()方法
class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) getSys