接收广播需要创建广播接收器。 使用广播接收器的风险和对策,根据收到的广播的类型而有所不同。 你可以在以下判断流程中找到你的广播接收器。 接收应用无法检查发送广播的应用的包名称,它是链接伙伴所需的。 因此,无法创建用于伙伴的广播接收器。
表 4.2:广播接收器的类型定义:
类型 | 定义 |
---|---|
私有 | 只能接收来自相同应用的广播的广播接收器,所以是最安全的 |
公共 | 可以接收来自未指定的大量应用的广播的广播接收器 |
内部 | 只能接收来自其他内部应用的广播的广播接收器 |
另外,根据定义方法,广播接收器可以分为两类:静态和动态。 它们之间的差异可以在下图中找到。 示例代码展示了每类的实现方法。 还描述了发送应用的实现方法,因为发送信息的对策取决于接收器来确定。
表 4.2-2
定义方法 | 特性 | |
---|---|---|
静态 | 由AndroidManifest.xml 中的<receiver> 元素定义 |
1)存在一些限制,不能收到一些由系统发送的广播,如ACTION_BATTERY_CHANGED 。2)从应用最初启动开始,卸载之前,可以收到广播。 |
动态 | 通过在程序中调用registerReceiver() 和unregisterReceiver() ,动态注册和注销广播接收器 |
1)可以收到静态广播接收器收不到的广播。2)广播的接收时期可以由程序控制,例如,只有活动在前台时,可以接收广播。3)不能创建私有广播接收器。 |