Skip to content

Latest commit

 

History

History
29 lines (15 loc) · 1.77 KB

File metadata and controls

29 lines (15 loc) · 1.77 KB

广播(Broadcasts)

Android 应用可以发送广播或者从系统或者其他应用接收广播,类似于观察者模式。

广播分两种类型,分别是有序广播和标准广播:

  • 标准广播 是一种完全异步执行的广播,在广播发出后,所有的广播接收器几乎都在同一时间接收到这条广播信息,因此他们之间没有任何先后顺序可言。这种广播的效率比较高,但同时也意味着它是无法被截断的。

  • 有序广播 是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够收到这条广播信息,当这个广播接收器中的逻辑执行完毕之后,广播才会继续传播。所以此时的广播接收器是有先后顺序的,优先级高的广播接收器就可以先接收到广播,而且前面的广播接收器还可以截断正在传播的广播。

注册

  • 静态注册 - 在Manifest文件中注册

    静态广播可以在程序未启动的时候也接收到广播。

    清单文件中的android:exported表示是否允许这个广播接收器接收本程序以外的广播。

  • 动态注册 - 在代码中注册

    registerReceiver()对广播进行注册,unregisterReceiver对广播进行注销

    动态注册的广播可以自由地控制注册与注销,在灵活性方面有很大地优势,但是,必须在程序启动之后才能接收广播。

不要在onReceive()方法中添加过多的逻辑或者进行任何的耗时操作,因为广播接收器是不允许开启线程的。当onReceive()运行了较长时间而没有结束,系统就会报错。因此广播接收器更多的是扮演一种打开程序其他组件的角色。

发送广播

本地广播是无法通过静态注册的方式接收的。