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

Android开发-java版学习笔记第四天

一、BroadcastReceiver动态广播

1.优缺点:

优点

  • 灵活性高:可以在运行时根据条件动态注册和注销

  • 生命周期可控:与注册的 Context 生命周期绑定,避免内存泄漏

  • 精确控制接收范围:可以根据应用状态决定何时接收广播

  • 安全性较好:只在应用运行时接收广播

缺点

  • 应用停止后无法接收:当应用进程被杀死时,无法接收广播

  • 需要代码管理:需要手动注册和注销,增加代码复杂度

  • 仅限于应用内:通常用于应用内部的通信

2.实现方式:

创建intentFilter的实例,并且给它添加一个值为

android.net.conn.CONNECTIVITY_CHANGE的action,这个值正是系统在网络状态发生变化的时候发出的值,我们所做的工作正是接受这个值并执行对应的操作。

动态注册的接收器一定要取消注册:onDestroy()方法

定义了一个NetWorkChangeReceiver的内部类继承BroadcastReceiver并重写了onReceive方法

给registerReceiver传入netWorkChangeReceiver和intentFilter实例进行注册接收器

然后在AndroidManifest.xml文件中声明权限

运行后可以开关网络状态,同时会弹出提示

二、BroadcastReceiver静态广播

1.优缺点:

优点

  • 持久性监听:应用未运行时也能接收广播(系统广播)

  • 自动唤醒:收到广播时可以启动应用进程

  • 声明简单:在 AndroidManifest.xml 中声明即可

  • 系统事件监听:适合监听系统级事件(如开机完成、网络变化)

缺点

  • 资源消耗:即使应用不需要,系统也要维护接收器

  • 安全性风险:可能被恶意应用发送广播攻击

  • 灵活性差:无法根据运行时条件动态控制

  • Android 8.0+ 限制:对隐式广播有很多限制

2.实现方法:

Exported属性代码是否允许这个广播接收器接收除本程序之外的广播

Enabled属性表示是否启动这个广播接收器

在文件中写入接收到对应的信息后要执行的代码

同时由于我们使用的Android Studio快捷方式创建的广播接收器,所以可以在AndroidManifest.xml文件中找到自动注册的代码

将其改为如下代码,安卓系统在启动完成后会发出一条值为android.intent.action.BOOT_COMPLETED的广播

同时要启动这个接收器也要声明权限:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

但是按照这个做,我没有收到开机广播,各位大佬能否给以指正,万分感谢!!

http://www.dtcms.com/a/596750.html

相关文章:

  • C#WEB 防重复提交控制
  • Linux:systemd服务之.service文件(二)
  • 24_FastMCP 2.x 中文文档之FastMCP服务端认证:构建完整的 OAuth 服务器详解
  • Linux:认识Systemd服务(一)
  • Python编程实战 - Python实用工具与库 - 爬取并存储网页数据
  • 网站建设中字样图片wordpress首页调用文章数量
  • “基于‘多模态SCA+全周期协同’的中间件开源风险治理实践”荣获OSCAR开源+安全及风险治理案例
  • BetterDisplay Pro for Mac显示器增强工具
  • 解决huggingface下载仓库时有部分大文件不能下载的问题
  • Qt键盘组合
  • Qt中的QShortcut:高效键盘快捷方式开发指南
  • c mvc制作网站开发google谷歌
  • STM32F103RCT6+STM32CubeMX+keil5(MDK-ARM)+Flymcu完成轮询方式检测按键
  • paimon实战 -- Flink 写入 Paimon 流程深度解析
  • HOT100题打卡第35天——二分查找
  • R语言 | 带重要性相关热图和贡献图如何解释?如何绘制随机森林计算结果重要性及相关性图?[学习笔记]
  • 做 专而精 的网站网站建设个人主要事迹
  • 怎么查看一个网站是谁做的注册城乡规划师备考
  • CMake开源库的编译与使用
  • GitLab CI/CD和Arbess,开源免费CI/CD工具选型指南
  • Observability:适用于 PHP 的 OpenTelemetry:EDOT PHP 加入 OpenTelemetry 项目
  • 第二十七篇:C++20协程:异步编程的终极革命
  • 【后端】【面试】 ③ PostgreSQL高级面试题(含答案与实战案例)
  • 静态加载法
  • 规范使用指针
  • 工业实时数据库选型指南:深度解析紫金桥 vs TDengine
  • DNS主从服务器的配置
  • DDR4 4.7 Write Leveling
  • 云手机通常使用什么架构
  • 幽冥大陆(十七)手机摄像头注册到电脑——东方仙盟炼气期