Android基础----BroadCastReceiver广播

1.广播的概念

    BroadCastReceiver (广播) 作为Android四大组件之一,应用场景是很多的,比如:通知,消息提醒,都是基于广播来实现的。


2.广播的类型:

  • 自定义广播
  • 有序广播
  • 系统广播
  • App内广播(本地广播)


3.广播的注册方式

    a.静态注册
 <receiver android:name=".broadCastReceiver.DBroad">
            <intent-filter android:priority="500">
                <action android:name="com.order.broadcast" />
            </intent-filter>
        </receiver>

    在AndroidManifest.xml文件中进行注册,其中<action>标签下的 name 属性 为启动广播所需的 action 属性

    b.动态注册
  @Override
    protected void onResume() {
        super.onResume();
        myBroadCastReceiver = new MyBroadCastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(ACTION);
        registerReceiver(myBroadCastReceiver, intentFilter);
    }

    @Override
    protected void onPause() {
        super.onPause();
        unregisterReceiver(myBroadCastReceiver);
    }
    在使用广播之前进行注册,要主动解除广播注册否则会引起内存泄漏

        

4.广播的使用方式

    a.自定义广播
  /**
     * 发送自定义广播
     */
    private void sendMyBroadCast() {
        Intent intent = new Intent();
        intent.setAction(ACTION);
        sendBroadcast(intent);
    }

    b.有序广播
  /**
     * 发送有序广播
     */
    private void sendOrderedBroadCast() {
        Intent intent = new Intent();
        intent.setAction(ACTION); 
        sendOrderedBroadcast(intent, null);

    }

     发送有序广播时,需将广播注册时的 <action> 中的 name 值 注册为相同的name,这样才会全部接收到,其中 priority 值 越大越先接收到消息。


    c.系统广播

    系统广播只需修改系统标记的ACTION即可且只需要在注册广播接收者时定义相关的action即可,不需要手动发送广播,当系统有相关操作时会自动进行系统广播


    d.App内广播
  /**
     * 发送本地广播
     */
    private void sendLocalBroadCast() {
        myBroadCastReceiver = new MyBroadCastReceiver();
        IntentFilter intentFilter = new IntentFilter();
        localBroadcastManager = LocalBroadcastManager.getInstance(this);
        intentFilter.addAction(ACTION);
        localBroadcastManager.registerReceiver(myBroadCastReceiver, intentFilter);
        Intent intent = new Intent();
        intent.setAction(ACTION);
        localBroadcastManager.sendBroadcast(intent);
    }
    App内广播为本地广播,其安全且效率高。由于Android系统中广播为统一管理,可能存在不安全的情况。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值