安卓四大组件-BroadcastReceiver(广播接收器)

本文详细介绍了Android中的广播机制,包括广播的定义、静态与动态注册的区别、有序与无序广播的特点,以及如何在代码中实现广播的发送和接收。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.什么是Broadcast(广播)

广播是一种通信机制,通过发送广播和接受广播可以实现跨进程之间的通信(俩个app的通信)。

2.广播的分类及区别——静态注册和动态注册

广播的使用需要一个类继承BroadcastReceiver并且实现它的onReceive()
广播调用时需要注册,分为静态注册和动态注册
*静态注册直接在mainfest注册,例如

//
        <receiver android:name=".MyBroadcastReceiver">
            <intent-filter>
                <action android:name="com.example.demo3.pm96" />
                //为了规范,用包名加.自定义名称
            </intent-filter>
        </receiver>

*动态注册直接在主函数生成

        MyReceiver myReceiver=new MyReceiver();//新建类对象
        IntentFilter intentFilter=new IntentFilter();//新建intentFilter对象
        intentFilter.addAction("com.example.demo3.pm96");//intentFilter对象添加广播名
        registerReceiver(myReceiver,intentFilter);//注册成功

*静态注册是常驻型广播。也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。
*动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期。注意: 在activity结束前,移除广播接收器。移除是用

unregisterReceiver(myReceiver);

最好写在 onDestroy()方法里;

3.广播的分类及区别——有序广播和无序广播

有序广播是会按优先级传递,就像上面领导派发任务是一级一级往下传递,按照大小往下传递,在静态加载中例如

 <receiver android:name=".MyBroadcastReceiver">
 //按从大到小依次加载,取值范围为-1000—1000.如果重复则优先级为按从上到下进行。
            <intent-filter  android:priority="1000">
                <action android:name="com.example.demo3.pm96" />

            </intent-filter>
        </receiver>
         <receiver android:name=".MyBroadcastReceiver2">
            <intent-filter  android:priority="100">
                <action android:name="com.example.demo3.pm96" />
            </intent-filter>
        </receiver>

动态加载则是在中间加上

intentFilter.setPriority(参数);

默认为无序广播,就像真正的广播,所有收音机都是同时收到广播,同时进行,并没有排队。

4.适配器发送广播实例

android6.0后需要权限详情,安卓8.0

这里写代码片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值