广播和广播接收者

广播和广播接收者
(1)广播:就是一对多,就是发送信息
(2)广播接收者:就是接收广播发送的消息并做处理

在Android中,广播接收者才是四大组件之一,广播不是
广播不会决定谁是接收者,只要是注册了该广播,那么就能成为该广播的接收者
接收系统发送的广播:比如,网络变化,开机状态,手机的状态

广播接收者的注册方式有两种
(1)动态的注册:在代码里面注册
灵活度比较高,但是当activity结束的时候必须解除注册
注册的步骤
(1)创建接收者对象
(2)创建intentFilter对象
(3)为intentFilter对象添加action
(4)注册: registerReceiver(networkReceiver,intentFilter);
解除注册:
调用unregisterReceiver(networkReceiver);
注册和解除注册的对象必须是同一个

(2)静态的注册:就是在清单文件中注册
使用的是receiver节点:

<receiver android:name=".NetworkReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE"></action>

        </intent-filter>

    </receiver>
name属性指定了要监听的广播的类型

开机启动当前的app:
(1)监听开机的广播
(2)启动app:
步骤:
(1)开机启动action:android.intent.action.BOOT_COMPLETED
(2)在广播中启动activity,需要给intent设置标示
Intent intent1 = new Intent(context,MainActivity.class);
//在广播里面启动activity的时候需要设置一个标示,该标示表示将MainActivity放入任务栈
intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent1);
(3)需要权限:

发送自定义的广播:
广播的种类分为两种:
(1)无序广播
所有的接收者基本是同一时刻接收到广播,彼此之间没有任何的关系
(2)有序广播
优先级高的广播接收者会优先接收到广播信息,并且可以对广播数据进行修改或者拦截广播

发送无序广播:
步骤:(1)
发送广播的module
Intent intent = new Intent();
intent.setAction(“com.yunhe.unorderbroadcast”);
sendBroadcast(intent);
action必须要设置,否则匹配

(2)广播接收者module:
直接在清单文件中配置receiver就行了,action要跟发送广播设置的action 保持一致

发送有序广播:
(1)发送广播的module
sendOrderedBroadcast(intent,null,null,null,1,”100万”,null);

<receiver android:name=".MyThirdReceiver">
            <intent-filter android:priority="400">
                <action android:name="com.yunhe.orderedbroadcast"></action>
            </intent-filter>
        </receiver>

使用priority属性可以指定广播接收者的优先级,优先级越高的广播接收者优先接收到广播,并可以对广播进行拦截.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值