广播的类型

广播的种类:
1、sendBroadcast           普通广播: 所有注册监听该广播事件的的接收者都能接收到到广播
2、sendOrderedBroadcast    有序广播: 按优先级的大小的顺序接收广播,优先级大的接收者可以将广播废弃,让后面的接收者不能接收到广播。也可以修改广播的内容。
        有序广播可以指定最后一个接收到消息的接收者,这时即使中途消息被abortBroadcast()了,还是能够收到信息。系统提供的打电话的广播接
        收者就是这样的。
3、sendStickyBroadcast     粘性广播:另外开启一个线程,处理广播接收。没有10秒的限制。应用场景是,WIFI状态扫描。

广播接收者的生命周期:
    广播接收者是运行在主线程里面的,运行时间不能超过10秒,如果超过10秒,系统就会将其阻塞。


    广播接收者其实就像一个普通的类,在intent-filter中配置监听了一些动作。smsListener的例子就是用广播接收者监听了android.provider.Telephony.SMS_RECEIVED动作
     而Service的生命周期更长,它也是监听一些动作,做一些事情。只不过它需要手动的添加对某些事件的监听器,并且监听到了后能做的事情更多。
    tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
        //注册一个电话状态改变的监听器.
    tm.listen(new MyPhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);
     所以说,什么receiver ,什么service,其工作原理其实是一样一样儿滴!
### 开机广播类型及相关操作 在 Android 系统中,当设备完成启动过程后,系统会发出 `BOOT_COMPLETED` 广播。此广播属于系统级广播的一种,开发者可以通过注册 `BroadcastReceiver` 来接收并处理该广播[^1]。 #### BOOT_COMPLETED 广播的特点 - **触发时机**:只有在设备完全启动之后才会发送这条广播。 - **权限需求**:为了能够接收到 `BOOT_COMPLETED` 广播,应用需要声明特定的权限 `<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />`[^1]。 - **应用场景**:通常用于恢复后台服务或者初始化某些依赖于系统启动的功能模块。 以下是实现监听开机广播的一个简单示例: ```java public class BootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) { // 执行相应的逻辑操作 Log.d("BootReceiver", "Device has been booted."); } } } ``` 同时,在清单文件 (`AndroidManifest.xml`) 中也需要配置对应的 receiver 和权限: ```xml <receiver android:name=".BootCompletedReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> ``` 需要注意的是,从 Android 8.0 (API level 26) 起,由于后台执行限制的影响,即使应用成功接收到了 `BOOT_COMPLETED` 广播,也不能立即启动长时间运行的服务;而是应该考虑使用 JobScheduler 或 WorkManager 替代传统 Service 的方式来安排延迟任务[^2]。 #### 关联概念扩展 除了基本的 `BOOT_COMPLETED` 外,还有其他一些与操作系统启动相关的事件可以关注: - **LOCKED_BOOT_COMPLETED**: 表明引导加载程序已完成但屏幕仍处于锁定状态下的广播通知。 - **QUICKBOOT_POWERON**: 部分厂商定制 ROM 提供的支持快速重启功能的通知标志位。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值