01 Android基础--广播

news2024/11/15 23:33:45

01 Android基础--广播

    • 什么是广播?
    • 广播的分类
    • 本地广播LocalBroadcastManager

什么是广播?

传输信息的机制。 主要记住三个要素:1.广播(Broadcast) - 用于发送广播;
2.广播接收器(BroadcastReceiver) - 用于接收广播;3.意图内容(Intent) - 广播相关信息的媒介

广播的分类

(1)按照注册的方式分类

  • 静态广播:在XML文件中注册的广播,activity销毁了,还能接收广播

  • 动态广播:用JAVA代码注册的广播。activity销毁了,广播接收不了了

// 静态广播

// 第一步:广播接收着
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 收到广播消息
    }
} 

//第二步:在xml中注册广播接收器
<receiver android:name=".MyBroadcastReceiver" >
   <intent-filter>
      <action android:name="my_broadcaster_action"></action>
   <intent-filter>
</receiver> 


// 第三步:发送广播
Intent intent = new Intent();
intent.setAction="my_broadcaster_action");
intent.putExtra("key_data", filePath);
// 发送广播
sendBroadcast(intent); 
// 动态广播:

// 第一步:广播接收着
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 收到广播消息
    }
} 

//第二步:用JAVA代码注册的广播接收器
// new 出广播接收器的对象
receiver = new MyBroadcastReceiver();
// 设置Action过滤
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("my_broadcaster_action");
// 注册广播接收器
registerReceiver(receiver, intentFilter);

// 第三步:发送广播
Intent intent = new Intent();
intent.setAction="my_broadcaster_action");
intent.putExtra("key_data", filePath);
// 发送广播
sendBroadcast(intent); 

补充:

        <receiver
            android:name=".MyBroadcastReceiver"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>



android:exported:此BroadcastReceiver能否接收其他App发出的广播(其默认值是由receiver中有无intent-filter决定的,如果有intent-filter,默认值为true,否则为false);
android:name:此broadcastReceiver类名;
android:permission:如果设置,具有相应权限的广播发送方发送的广播才能被此broadcastReceiver所接收;
android:process:broadcastReceiver运行所处的进程。默认为App的进程。可以指定独立的进程(Android四大组件都可以通过此属性指定自己的独立进程);

(2)按照发送的方式分类

  • 标准广播

  • 有序广播

标准广播:广播接收器会在同一时刻接收到这条广播消息,没有先后顺序
在这里插入图片描述

有序广播:有先后顺序, 并且可以截断正在传递的广播,截断以后,后面就收不到消息了
在这里插入图片描述

(3)按照定义的方式分类

  • 系统广播:Android系统中内置了多个系统广播,电池电量,有没有网络等等

  • 自定义广播:自己写的

本地广播LocalBroadcastManager

安全 。 使用该机制发出的广播只能够在应用程序内部进行传递,并且广播接收器也只能接收来自本地应用程序发出的广播。

// 第一步:广播接收着
class LocalReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText(context, "received local broadcast", Toast.LENGTH_SHORT).show();
        }
}


//第二步:注册的广播接收器
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.broadcasttest.LOCAL_BROADCAST");
localReceiver = new LocalReceiver();
localBroadcastManager.registerReceiver(localReceiver, intentFilter); 


// 第三步:发送广播
Intent intent = new Intent("com.example.broadcasttest.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);

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

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

相关文章

【活学活用掌握trap命令】

trap 命令用于指定在接收到信号后将要采取的动作&#xff0c;常见的用途是在脚本程序被中断时完成清理工作。当 shell 接收到 sigspec 指定的信号时&#xff0c; arg 参数(通常是执行命令)会被读取&#xff0c;并被执行。 1. 命令介绍 开始掌握基本的使用方式和方法 [1] 语法…

云计算简介

本文为copy他人编写的文档&#xff0c;由于不确认作者名称&#xff0c;故无法标记来源&#xff08;实际来源是群pdf文档&#xff09;&#xff0c;暂时发文为原创&#xff0c;因为无法贴出原文链接&#xff01; 云原生的前世今生 随着公有云和私有云的广泛部署&#xff0c;云计…

1.1 Linux开发环境搭建

1. Ubuntu服务器安装ssh工具&#xff0c;然后使用xshell连接 查看Ubuntu服务器的IP地址时&#xff0c;如果ifconfig失败&#xff0c;需要先安装一下net工具 sudo apt install openssh-server sudo apt install net-tools2. 打开vscode&#xff0c;安装Remote Development拓展…

操作系统——11.线程概念和多线程模型

这篇文章我们来讲一下操作系统中的线程概念和多线程模型 目录 1.概述 2.线程 2.1问题提出 2.2线程概念 2.3带来的变化 2.4线程的属性 2.5线程的实现方式 2.5.1用户级线程 2.5.2内核级线程 2.5.3相互组合 2.6多线程模型 2.6.1多对一模型 2.6.2一对一模型 2.6.3多…

操作系统权限提升(二十二)之Linux提权-SUDO滥用提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一)之Linux提权-环境变量劫持提权 SUDO滥用提权 SUDO滥用提权原理 sudo是linux系统管理指令&…

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

避坑宝 v1.0.0 基于SpringBootuniapp企业黑红名单吐槽小程序 &#x1f4da;项目介绍 避坑宝 【避坑宝】企业黑红名单吐槽小程序是一个具有吐槽发布企业信息的一个平台&#xff0c;言论自由&#xff0c;评判自定&#xff0c;便于我们打工人分辨企业好坏。技术栈基于SpringBoot…

墨者靶场--报错盲注

引入一下报错注入的知识点&#xff0c;参考【https://www.cnblogs.com/X-caiji/p/13186633.html】 输入测试语句1 and 11--,正常回显 1 and 12-- 无任何报错信息&#xff0c;但是可以确定我们输入的内容确实是被执行了。 那么可以考虑是盲注 一般在实战过程中就需要考虑各种各…

Elasticsearch集成之(Spring Data Elasticsearch)

Elasticsearch集成之&#xff08;Spring Data Elasticsearch&#xff09; 1、Spring Data 框架介绍 Spring Data 是一个用于简化数据库、非关系型数据库、索引库访问&#xff0c;并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷&#xff0c;并支持 map-re…

php宝塔搭建部署实战织梦响应式人力资源网站模板源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套php开发的织梦响应式人力资源网站模板源码。感兴趣的朋友可以自行下载学习。 技术架构 PHP7 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&#xff0c;宝塔…

线下实践阿里云:「 云原生技术实践营 - 容器微服务专场 」

一、前言 自己在杭州工作和生活也有将近10年&#xff0c;由于有些前同事和朋友在阿里上班&#xff0c;也过去玩过几次。在印象中&#xff0c;作为联谊公司&#xff0c;还和阿里组织过一些小规模的活动&#xff0c;比如相亲和篮球比赛。 所以&#xff0c;对阿里杭州的滨江园区和…

2023年最新人工智能入门指南(学习清单)

ChatGPT最近很火&#xff0c;为了帮助想入门人工智能的小伙伴们准备了一份超详细的学习清单 前言 为帮助大家快速入门机器学习、深度学习&#xff0c;根据我自己多年的学习和工作经验&#xff0c;总结了这份保姆级的学习清单&#xff0c;让大家在学习时不走弯路。 这份清单主…

抽象队列同步器AQS应用lock详解

目录 AQS应用之Lock 并发之父 ReentrantLock 整体实现思路 AQS具备特性 同步等待队列 条件等待队列 AQS源码分析 AQS应用之Lock 并发之父 生平不识Doug Lea&#xff0c;学懂并发也枉然 Java并发编程核心在于java.util.concurrent包而juc当中的大多数同步器实现都是围绕…

linux 环境 postgresql + postgis 安装

postgis 是 postgresql 的一个扩展插件&#xff0c;具有强大的空间计算功能&#xff0c;很适合用于地图系统。本次演示使用的操作系统为CentOS Linux release 7.9.2009 (Core)postgis 下载登录 postgis 的官方网站&#xff1a;http://postgis.net/下载符合 postgresql 数据库版…

ShardingSphere官方文档感悟

ShardingSphere官方文档感悟什么是ShardingSphereShardingSphere-JDBCShardingSphere-Proxy功能产品优势设计哲学连接增强可插拔L1内核层L2功能层L3生态层部署形态ShardingSphere-JDBC独立部署ShardingSphere-Proxy独立部署混合部署架构官网地址&#xff1a; https://shardings…

HTTP的前世今生

承接上文HTTP请求的详细过程http协议版本历史http造就了万维网&#xff0c;http成就了互联网第三次信息技术革命并且影响着即将到来的第四次人工智能技术革命。1989年第一个http协议&#xff0c;http0.9发布&#xff0c;发明了万维网&#xff0c;创建了世界第一个网页浏览器&am…

软件测试面试必杀篇:【2023软件测试面试八股文宝典】

800道软件测试面试真题&#xff0c;高清打印版打包带走&#xff0c;横扫软件测试面试高频问题&#xff0c;涵盖测试理论、Linux、MySQL、Web测试、接口测试、App测试、Python、Selenium、性能测试、LordRunner、计算机网络、数据结构与算法、逻辑思维、人力资源等模块面试题&am…

Jinja2----------过滤器的使用、控制语句

目录 1.过滤器的使用 1.过滤器和测试器 2.过滤器 templates/filter.html app.py 效果 3.自定义过滤器 app.py templates/filter.html 效果 2.控制语句 1.if app.py templates/control.html 2.for app.py templates/control.htm 1.过滤器的使用 1.过滤器和测…

在linux中配置环境变量

1. 环境变量的作用 环境变量是操作系统在运行的时候&#xff0c;记录的一些关键性信息&#xff0c;用于辅助系统的运行。 在linux中执行 evn 命令即可查看当前系统中记录的环境变量。 环境变量是一种KeyValue结构 2. 符号$ 在linux系统中&#xff0c;$&#xff0c;用于取“…

【C++】STL——list的模拟实现

list的模拟实现 文章目录list的模拟实现一、list三个基本类的模拟实现总览二、节点类接口实现模拟实现构造函数三、迭代器类接口实现1.正向迭代器默认成员函数构造函数六种运算符重载 */->//--/!/2.反向迭代器四、list类接口实现1.默认成员函数1.1.构造函数1.2.析构函数1.3.…

Hive3.1.3安装部署_最小化部署_元数据MySQL部署_Hiveserver2部署_metastore部署---大数据之Hive工作笔记0012

hbase 实时分析 hive 离线分析 这里是新版本的hive3.1.3的安装 关于hive的原理之前的博客已经详细说了 可以看到上面是hive运行的原理图 词法分析 语法分析