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

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

这里写代码片

你可能感兴趣的:(初级安卓开发)