广播机制

发送广播,需要使用Intent,而接收广播只需要使用Broadcast Receiver,而广播分两种,一种是标准广播也就是异步广播,另一种是有序广播,也就是同步广播。
注册广播分两种,一种是代码中注册,另一种是AndroidManifest.xml中注册,也就是静态注册。
那么如何创建一个广播接收器?新建一个类,继承自BroadcastReceiver ,并且重写onReceive()方法

private IntentFilter intentfilter;

intentfilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);

class NetworkChangeReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context,Intent intent){
        //TODO
    }
}


通过IntentFilter来决定要接受哪些广播,然后一个继承BroadReceiver的类来决定收到了以后干什么.通过registerReceiver来注册这个接收器,同时也一定要在一个地方记得取消注册,比如onDestory中

同时安卓中你为了获得某些设备的信息,要添加许可申明,在AndroidManifest.xml

这里写图片描述

静态注册,在包上点击右键创建一个BroadReceiver,然后AndroidMainfest中会自动帮你生成一个receiver,在里面添加intent-filter,如下图
这里写图片描述
这样子当发出的广播被intent-filter截获到,就会调用android:name这个类的onReceive方法

发送自定义广播

发送标准广播
首先用上面得方法定义一个广播接受器,用IntentFilter配合registerReceiver方法,就可以接受,而发送广播则是

Intent intent =  new Intent("xxxx");
sendBroadcast(intent);

这样子广播就被发送出去了,这样我们的广播就完成了,所有的应用都会收到

发送有序广播
只需要将sendBroadcast改为sendOrderedBroadcast,接受的顺序根据优先级决定,优先级定义如下
这里写图片描述

而因为是同步,所以可以决定是否让广播继续传播,如果不想,直接调用abortBroadcast()这个方法就好了。

本地广播
本地广播广播只会在应用本地传播,不用担心别的应用会接收到,用法


private LoccalReceiver localReceiverl; //接受器继承自BroadcastReceiver
private LocalBroadcastManager localBroadcastManager; //本地广播独有的管理器
localBroadManager = LocalBroadcastManager.getInstance(this);

Intent intent = new Intent("cxccc");
localBroadManager.sendBroadcast(intent); //发送广播

localReceiver = new LocalReciver();
intentFilter.addAction("cxccc");
locaslBroadcastManager.registerreceiver(localReceiver,intentFIlter); //接受广播

localBroadcastManager.unregisterReceiver(localReceiver);//取消注册







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值