当前位置: 首页 > article >正文

安卓入门五 BroadcastReceiver

  1. BroadcastReceiver

android通过广播来实现不同进程间的通信,对应于广播(broadcast)还有一个广播接收器(broadcast receiver)。每个广播指定了对应的action、type等信息,每个接收器根据这些信息来过滤是否自己要接收的广播。

广播接收器主要分为两种类型:标准广播 和 有序广播

2.1 Normal Broadcast

标准广播是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播的信息,因此他们之间没有任何的先后顺序可言。

标准广播又区分为两种:动态注册 和 静态注册

动态

1.发送广播之前,需要先定义一个广播接收器来准备接收此广播。

2.在我们想接收的地方进行注册一个广播来进行接收。

以上的IntentFilter为广播过滤器,意味着我们只能够接收到 带有

“com.example.jie.Broad”(自定义)发出的广播。

3.上面我们已经有了广播接收器,并且在我们想要的地方进行注册了,就可以发送广播了。

4.记得注销。

静态注册

设置为静态注册的时候,我们的广播接收器就一个设置为 独立外部类 或者是 静态内部类

唯一不同就是静态注册我们就不需要在代码中进行注册,只需要在菜单中进行一次注册。

 enabled 设置为 true 意味着能够接受到信息 ,exported 为 true 意味着能够接收到外部apk广播发送的信息。发送还是跟动态发送一样。

2.2 带权限标准广播

(我们把下面 发送信息的apk称为甲,接收的信息的apk称为乙)

1.如果别的应用程序监听我们的广播,那么会造成我们应用程序的数据泄露;

乙:我们在乙中添加如下权限我们就可以获取得到已经得到甲加了权限的

2.如果别的应用程序冒充我们的应用发送广播,如何不随意接收别的程序发过来的程序

静态注册

动态注册

2.3 Ordered Broadcast

广播接收器是有先后顺序的,而且前面的广播可以对后续的广播进行截断,以阻止让其继续广播。

权限的高低设置方法如下。

调用IntentFilter的setPriority(int priority)方法设置优先级,参数值可以是-1000~1000,值越大,优先级越高。同样的在静态注册中,通过设置intent-filter标签的priority属性来设置优先级

截断方法

为了解决安卓的广播安全问题安卓还引入了另一个 LocalBroadcastManger 类。

2.4 Local Broadcast

本地广播

2.5 System Broadcast

系统广播

通过注册来接收到广播的发出来的一些系统通知,如飞行模式被打开,音量键被按等。

动态注册

静态注册

如下是系统的一些常见的行为。

2.6 AMS(Activity Manager Service)

Android广播机制主要工作是为了实现一处发生事情,多处得到通知的效果。这种通知工作常常要牵涉跨进程通讯,所以需要由AMS(Activity Manager Service)集中管理。

品茗论道说广播(Broadcast内部机制讲解) - 悠然红茶的个人页面 - OSCHINA - 中文开源技术交流社区

android Application Component研究之BroadcastReceiver-CSDN博客


http://www.kler.cn/a/463904.html

相关文章:

  • RabbitMQ-基本使用
  • 被催更了,2025元旦源码继续免费送
  • 感知机参数更新策略
  • 项目:停车场车辆管理系统
  • 【Vue3】h、ref:vue3的两个新特性(重要)-h和ref
  • Spring源码分析之事件机制——观察者模式(二)
  • ARM/Linux嵌入式面经(六二):诺瓦星云
  • 年会投票小游戏
  • MySQL标准合规
  • 【ubuntu】安装OpenSSH服务器
  • 攻防世界web第六题upload1
  • 如何使用交叉编译器调试C语言程序在安卓设备中运行
  • 计算机网络原理(谢希仁第八版)第3章课后习题答案
  • vscode ssh远程连接已配置好仍然不能自动登录问题解决
  • java的bio、nio、aio 以及操作系统的select、poll、epoll
  • 【开源免费】基于SpringBoot+Vue.JS校园社团信息管理系统(JAVA毕业设计)
  • 解决表格数据量大时ie浏览器卡顿
  • Python中PDF转Word的技术
  • web课程设计--酷鲨商城-springboot和vue
  • Solon 加入 GitCode:助力国产 Java 应用开发新飞跃
  • OpenGL入门最后一章观察矩阵(照相机)
  • 【2024年-6月-14日-开源社区openEuler实践记录】探索 test - tools:高效测试的开源宝库
  • 电子电器架构 --- 自动驾驶技术中的LiDAR
  • windows编译llama.cpp GPU版本
  • Java Web开发基础——Java Web项目中的MVC设计模式
  • Leetcode打卡:二叉树中的链表