Android中广播的基本介绍

文章目录

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

1. 广播的概念

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

2. 广播的基本组成

2.1 广播发送器

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

  • 通过设置Action,标识该广播可被哪些接收器收到。
  • 可通过putExtra传递额外的bundle信息。
// 创建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来执行。

 private BroadcastReceiver mReceiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {// 收到广播消息}};

3. 广播注册

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

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

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

3.1 动态注册

在Activity中注册广播接收器:

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
registerReceiver(mBroadcastReceiver, intentFilter);

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

@Override
protected void onDestroy() {super.onDestroy();unregisterReceiver(receiver);
}

3.2 静态注册

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

<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中的广播进行了基本的介绍,旨在让大家对广播有初步的认识。
后续我们将会详细了解静态广播与动态广播、有序广播与无序广播、本地广播与全局广播。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/762096.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虹科Pico汽车示波器 | 免拆诊断案例 | 2019 款东风悦达起亚K2车怠速起停系统工作异常

一、故障现象 一辆2019款东风悦达起亚K2车&#xff0c;搭载G4FG发动机&#xff0c;累计行驶里程约为9 400 km。车主反映&#xff0c;行驶至路口停车等红灯时&#xff0c;怠速起停&#xff08;ISG&#xff09;系统自动使发动机熄火&#xff0c;接着组合仪表提示“怠速起停已解除…

某东联盟js逆向

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872 本文章…

mysql无法看到3306端口监听

参考:https://blog.csdn.net/shumeigang/article/details/103902459 mysql> show global variables like ‘port’; 是0 原因是我的my.cnf有话&#xff1a; skip-network 或 注释掉&#xff0c;然后重新启动下数据库&#xff0c;运行netstat -an|grep 3306 就可以看到了

C#非强签名dll搜索顺序

由于不是强签名dll&#xff0c;所以无效考虑全局程序集缓存 (GAC)。 预备工作 新建解决方案ClassLibrary1,新建类库ClassLibrary1,新建控制台程序ShowDllLoc。 利用VS添加引用。 一&#xff0c;利用app.config设置codebase&#xff0c;设置dll的加载路径为&#xff1a;code…

Java中的类与对象

面向对象 设计对象并使用 类: 是共同特征的描述(设计图) 对象: 是真实存在的具体实例 Javabean类: 用来描述一类事物的类,在Javabean类里是不写main方法的 注意: 类名首字母要大写,见名知意,(驼峰模式) 注意: 在实际开发中,建议一个文件定义一个class类 代码: package com.…

C#探索之路基础篇(1):编程中面向过程、数据、对象的概念辨析

文章目录 C#探索之路基础篇(1)&#xff1a;编程中面向过程、数据、对象的概念辨析1 面向过程编程1.1 概念1.2 示例代码&#xff1a;1.3 使用范围与时机&#xff1a;1.4 注意事项&#xff1a;1.5 通俗讲法 2 面向对象编程2.1 概念2.2 示例代码2.3 使用范围2.4 注意事项2.5 通俗讲…

软考高级:UML定时图概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

每天学习一个Linux命令之useradd

每天学习一个Linux命令之useradd 介绍 Linux操作系统提供了许多命令来管理用户和用户组。其中一个重要的命令是useradd&#xff0c;它用于在系统中创建新用户。useradd命令提供了许多选项来控制创建用户的行为。本文将逐一介绍useradd命令的所有可用选项。 可用选项 userad…

Java部署运维

1.docker Docker&#xff08;一&#xff09;&#xff1a;安装、命令、应用Docker(二)&#xff1a;数据卷、Dockefile、Docker-composeDocker(三) 通过gitlab部署CICD Docker超详细教程——入门篇实战 Docker教程 2.nginx 3.keepalived 4.k8s 5.jekenis

KW音乐搜索参数

声明&#xff1a; 本文章中所有内容仅供学习交流&#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 逆向目标: …

Pytorch之Dataset和DataLoader的注意事项

1、数据集的保存形式&#xff1a;一行一行的。 比如说预测两个值的加法&#xff1a;abc&#xff0c;那么传进Dataset的形式应该是 a1,b1,c1 a2,b2,c2 ... an,bn,cn 2、代码 import numpy as np import pandas as pd import torch from torch.utils.data import DataLoader, D…

【Git】第一课:Git的介绍

简介 什么是Git? Git是一个开源的分布式版本控制系统&#xff0c;用于跟踪代码的改变和协同开发。它最初由Linus Torvalds为了管理Linux内核开发而创建&#xff0c;现已成为开源软件开发中最流行的版本控制系统&#xff0c;没有之一。Git允许多人同时在不同的分支上工作&…

【leetcode热题】轮转数组

给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6,7,1,2,3,4…

Linux配置bond(网卡绑定)

Linux配置bond&#xff08;网卡绑定&#xff09; 最近需要搭建测试环境&#xff0c;为了保证带宽不成为瓶颈&#xff0c;就需要使用bond来提升网络带宽 1 概念、原理、工作模式 1.1 概念&#xff1a;网卡捆绑 网卡绑定,也称作网卡捆绑。就是将两个或者更多的物理网卡绑定成一…

Leetcode 200. 岛屿数量

心路历程&#xff1a; 在没有看图论这一章之前看这道题没什么直接的思路&#xff0c;在看完图论之后&#xff0c;学着使用DFS和BFS去套用解决。第一次自己做的时候还是遇到了很多小问题。整体思路很流畅&#xff0c;但是需要处理的细节第一次没怎么处理好&#xff0c;花了很多…

[C语言]手动实现strcat strcmp strcpy strstr strtok(静态全局指针初始化方式)代码

strcat strcmp strcpy strstr strtok这些代码均存储在c语言的头文件<string.h>中&#xff0c;如果要使用的话直接调用即可&#xff0c;但是为了增加我们对代码的理解&#xff0c;我们看一下如何手动实现这些代码吧&#xff01; strcat strcat是在字符串后面增加上自己想…

Postgresql数据库入门简介

Postgresql入门 1.Postgresql数据库简介 PostgresQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进&#xff0c;PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSql可以运行在所有主流操作系统上&#xff0c;包括Linux…

WebGIS管线在线编辑器(电力、水力、燃气、热力、热能管线)

随着GIS等信息技术的发展&#xff0c;地下管线管理也从二维平面向三维立体管理迈进。传统管线信息管理系统将管线及其附属设施抽象成二维平面内的点、要素&#xff0c;并使用各类点符号、不同颜色线段进行表达。虽能一定程度上满足城市智慧运行的需要&#xff0c;但不能很直观的…

分布式锁简单实现

分布式锁 Redis分布式锁最简单的实现 想要实现分布式锁&#xff0c;必须要求 Redis 有「互斥」的能力&#xff0c;我们可以使用 SETNX 命令&#xff0c;这个命令表示SET if Not Exists&#xff0c;即如果 key 不存在&#xff0c;才会设置它的值&#xff0c;否则什么也不做。 …

mpyboard开发板使用REPL

文章目录 WindowsMacOS XLinux使用REPL提示符重启开发板 REPL是指交互式解释器&#xff08;Read Evaluate Print Loop&#xff09;&#xff0c;就是一种命令输入交互模式&#xff0c;可以使用命令行的方式与pyboard进行交互。REPL是测试代码和运行命令最简单的方式之一&#xf…