Android广播机制简析

1. 广播机制简介

Android 中的广播主要是用来在不同的组件间传递消息用的。 app 能够接收来自 Android 系统或者其他 app 所发送的广播。也能像其发送系统提供的或者自定义的广播。例如,Android系统启动时就会发送一个开机广播,如果想要在开机是处理一些逻辑,可以监听该广播。

应用场景如下:

  • 同一个app内部的同一个组件内的消息通信(单个或多个线程);
  • 同一个app内部的不同组件之间的消息通信(单个或多个进程)
  • 不同app之间的组件之间的消息通信
  • Android系统在特定情况下与App之间的消息通信

2. 广播的接收

想要接收系统或者app发送的广播,需要提前对广播接收器(BroadcastReceiver)进行注册。Android提供了两种注册的方式:静态注册和动态注册

2.1 静态注册广播接收器

静态注册是通过<receiver>标签在 AndroidManifest.xml 进行声明实现的。通过这种注册方式,再接收到广播时系统会启动应用,即使这个应用没有运行

通过以下步骤可以实现静态注册一个广播接收器

  1. 在 AndroidManifest.xml 中定义一个 <receiver> 标签:
    <receiver
        android:name=".CustomBroadcastReceiver"
        android:exported="true">
        
        <intent-filter>
            <action name="android.intent.action.BOOT_COMPLETED"/> 接收开机广播
            <action name="com.zero.test.CUSTOM_ACTION"/> 自定义广播
        </intent-filter>
    </receiver>
    
    
    //监听开机广播需要指定的权限,要加上下面这一句
    <uses-permission android:name="permission.RECEIVER_BOOT_COMPLETED"/>

<receiver>的常用属性:

  • android:enable:是否启用广播接收器。
  • android:exported:设置此广播接收器是否可以接收其他应用所发出的广播。它的默认值取决于是否包含过滤器(<intent-filter>),如果没有定义<intent-filter>标签,则默认为 false ,如果有则为 true。
  • android:permission:外部的 app 只有声明了该属性所指定的权限,才能向这个广播接收器发送消息。
  • android:process:指定该广播接收器运行的进程。若没有指定则默认运行在 app 的主进程或者 所指定的进程。如果该值以:开头,则表示开启一个子进程,这个广播接收器就是运行在其中的。
  1. 接着创建一个继承自 BroadcastReceiver 的子类,并重写 onReceiver() 方法
    public class CustomBroadcastReceiver extends BroadcastReceiver {
   
        @Override
        public void onReceive(Context context, Intent intent) {
   
            //弹出一个提示
            Toast.makeText(context, "接收到" + intent.getAction() + "广播", Toast.LENGTH_SHORT).show();
        }
        
    }

通过以上两步,系统会在 app 安装时就将广播接收器注册完成,相当于这个广播

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值