Android中广播的基本介绍

文章目录

  • [1. 广播的概念](#1. 广播的概念)
  • [2. 广播的基本组成](#2. 广播的基本组成)
    • [2.1 广播发送器](#2.1 广播发送器)
    • [2.2 广播接收器](#2.2 广播接收器)
  • [3. 广播注册](#3. 广播注册)
    • [3.1 动态注册](#3.1 动态注册)
    • [3.2 静态注册](#3.2 静态注册)

1. 广播的概念

BroadcastReceiver,广播接收器,是Android四大组件之一,可用来跨进程通信的一种机制。当然,也可以用于进程内的组件间通信。

2. 广播的基本组成

2.1 广播发送器

与其他四大组件(Activity、Service)一样,也是使用Intent发送广播。

  • 通过设置Action,标识该广播可被哪些接收器收到。
  • 可通过putExtra传递额外的bundle信息。
java 复制代码
// 创建Intent
Intent intentResult = new Intent();
intentResult.setAction("my_broadcaster_action");
intentResult.putExtra(KEY_RESULT, filePath);
// 发送广播
sendBroadcast(intentResult);

2.2 广播接收器

使用BroadcastReceiver类,继承或者直接new该类的对象实例,重写方法 onReceive ,在该方法中处理收到的广播消息。

注意,该方法中不要做耗时操作,否则会ANR异常(最长10秒)。

如果非要做耗时操作,通常是启动Service,在该Service中使用子线程或者直接启动一个IntentService来执行。

java 复制代码
 private BroadcastReceiver mReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // 收到广播消息
        }
    };

3. 广播注册

创建完广播接收器后,最后还需要将其注册,这样它才能接收广播。

主要是为其配置Action,表示它能接收的广播特征,从而过滤到适合它的广播信息。

注册的方式分为静态注册 和动态注册。

3.1 动态注册

在Activity中注册广播接收器:

java 复制代码
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
registerReceiver(mBroadcastReceiver, intentFilter);

动态注册不要忘记解除注册,一般是在Activity的onDestroy中:

java 复制代码
@Override
protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(receiver);
}

3.2 静态注册

在Manifest文件中注册广播接收器:

xml 复制代码
<receiver android:name=".receiver.MyBroadcastReceiver">
    <intent-filter>
        <action android:name="my_broadcaster_action" />
    </intent-filter>
</receiver>

.receiver.MyBroadcastReceiver是MyBroadcastReceiver类的包名全路径的缩写,这里替换成你自己的全路径类名。比如你的包名是:com.example.broadcasttest,这里应该写 com.example.broadcasttest.MyBroadcastReceiver

本文就是对Android中的广播进行了基本的介绍,旨在让大家对广播有初步的认识。

后续我们将会详细了解静态广播与动态广播、有序广播与无序广播、本地广播与全局广播。

相关推荐
思想觉悟1 小时前
SEAndroid实战
android·linux·c++
思想觉悟1 小时前
Aosp开发磨刀石之ADB速查
android·c++
应用市场3 小时前
用本机跑的开源音乐模型,给安卓小游戏做 20 秒无缝循环背景音乐
android·python·游戏开发·soundpool·音频处理
企业数字化笔记3 小时前
表单发布前怎么验收?版本引用、字段兼容和历史数据回归
android·数据挖掘·回归
生信分析笔记4 小时前
Nature 正刊 GPN-Star 基因组语言模型
android
渣渣盟4 小时前
Flink 状态管理深度剖析:从 KeyedState 到 RocksDB,状态如何存储、恢复与扩缩容
android·大数据·flink
avi91114 小时前
电影开源Jevdo - 源码介绍(vue版)没有android 和 没有wpf
android·wpf·框架·数据爬虫·meego·电影管理
OxYGC4 小时前
[工程] PHP2Shell 漏洞解析:两条 PHP 内核 RCE,为什么应用层的防护全部失效
android·开发语言·php
拥小抱19 小时前
Compose 知识点
android
文章永久免费只为良心19 小时前
Web应用安全与防护_第三章_日志文件包含_从一道 CTFshow 题目讲透「日志投毒型 LFI → RCE」:原理、时序陷阱与全变种攻防手册
android·网络安全·渗透测试·漏洞危害·漏洞描述·日志投毒·红队指南