安卓中的广播机制

本文介绍了Android中广播的作用,如在网络状态改变或蓝牙关闭时执行相应任务。详细讲解了如何创建BroadcastReceiver,注册、注销系统广播,以及发送和接收自定义广播。此外,还提到了本地广播的概念,它限制广播在应用内部传递。
摘要由CSDN通过智能技术生成

广播

作用(以下“任务”均为瞬时任务或打开其他组件的任务)

  • 本质

    ​ 满足以下需求:任务的执行需要某信号的出现。(例如:当用户复制一段文字后,对复制内容进行处理)

  • 接收系统中的广播

    ​ 当在系统进行某些状态变化或事件发生时,需要对此执行一些任务。例如:网络状态改变(wifi断开)时,更新UI;用户关闭蓝牙时,停止相关蓝牙控制业务。

  • 接收其他应用的广播或向其他应用发送广播

  • 只接收应用内部的广播

    ​ 需要执行符合第一点“本质”且执行范围仅在本应用内部的任务时,可使用广播机制。具体使用场景还没想到。

注册系统中的一些广播(有一些系统广播注册需要权限)

  • 创建广播类(MyReceiver)

    • 继承BroadcastReceiver类

    • 实现onReceiver回调函数

      ​ 在这里面编写收到广播消息时要做的业务逻辑

  • 注册相关广播

    • 创建意图过滤器实例IntentFilter

      IntentFilter intentFilter = new IntentFilter();
      
    • 在过滤器中添加需要“注意”的action(就是需要的消息)

       intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
      	//意图为:网络连接改变
      
    • 创建自定义广播(上一小节的MyReceiver)的实例

      NetworkChangeReceiver networkChangeReceiver = new NetworkChangeReceiver();
      
    • 将MyReceiver与意图过滤器进行绑定

      registerReceiver(networkChangeReceiver,intentFilter);
      
  • 取消注册

    unregisterReceiver(networkChangeReceiver);
    

自定义广播

  • 创建广播

    • 创建自定义的action:可被其他Receiver按照上节方式注册

      Intent intent = new Intent("包名.MYBROADACTION");
      //参数部分为自定义广播消息,类似“android.net.conn.CONNECTIVITY_CHANGE”
      
  • 发送广播

    sendBroadcast(intent);
    

本地广播

此类广播只能在应用内部发送和注册,应用外无法收到此类广播消息

  • 创建LocalBroadcastManager实例

    • 这个类用来管理本地广播的注册与发送,其使用方式和上两节一致,只不过以上的方法要在此实例中调用(例如:localBroadcast.unregisterReceiver)
    LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值