四大组件—Broadcast、ContentProvider

Android四大组件(面试篇) 基本上每次面试在这些面试中Android四大组件基本上必问,并且也会问一些细节性的问题,如果四大组件的问题不能对答如流,就让面试官感觉基础不太扎实,导致面试失败。 阅读详情

BroadCast

什么是广播

广播是一种消息型组件,用于在不同组件甚至不同应用之间传递消息。

广播的分类

  • 标准广播

    完全异步的广播,多个广播接收器可以同时接受广播,且无法被截断。

  • 有序广播

    有序广播通过sendOrderedBroadcast来发送,所有的广播接收器按照优先级的顺序依次接收,广播的优先级可以通过receiver的intent-filter中android priority属性设置,数值越大优先级越高(-1000~1000)。可以使用abortBroadcast来截断该广播。

  • 本地广播

    当我们并不需要将广播的内容发送给外部App使用时,仅在自己App内使用就可以使用本地广播。

  • 粘性广播

    粘性消息的意思就是发送后一直存在于系统消息容器中,等待对应的处理器去处理,当处理完消息后,通过removeStickyBroadcast取消粘性消息。在Android5.0后被废弃。

模型描述

Broadcast是设计模式中的观察者模式:基于消息的发布订阅事件模型

三个角色

  • 广播接收者(订阅者)
  • 广播发送者(发布者)
  • AMS(消息中心)

广播发送者发送广播,通过Binder进程通信机制发送给AMS,请求AMS处理,由AMS在注册列表中寻找合适的广播接收者。广播接收者也是通过Binder机制在AMS中注册。广播接收者通过回调onReceive方法处理消息。

注册方式

静态注册

静态注册,就是在AndroidManifest.xml文件中通过添加标签注册此广播接收者。

<receiver
            android:name=".MyReceiver"
            android:enabled="true"
            android:exported="true">

            <intent-filter
                android:priority="10">
                <action android:name="自定义匹配规则"/>
            </intent-filter>

</receiver>

静态注册的广播不会收到任何组件生命周期的影响,即使应用未被打开或者应用关闭后,仍然可以接收到广播。这方便了开发者,但是由于开发者在App中大量的滥用静态广播,导致App从后台被唤醒,严重的影响到手机的电量性能,所以官方在每个都会削减静态广播的功能。在8.0之后,所有的隐式广播不允许使用静态注册的方式来接收(少部分系统广播可用),想要用静态注册的接收者发送广播时需要加上包名。

动态注册

动态注册,即使用Java代码在Activity中注册

broadCastReceiver = new MyBroadCastReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("");

registerReceiver(broadCastReceiver,filter);

注意,注册完之后一定要在某个地方接触注册

unregisterReceiver(broadCastReceiver);

ContentProvider

什么是ContenProvider

ContentProvider是一种数据共享型组件,用于向其他组件乃至其他应用程序共享数据。提供一套标准的接口用来获取及操作数据,组件内部实现增删改查四种操作,在内部维持着一份数据集合,这个数据集既可以通过数据库来实现,也可以采用其他任何类型来实现,比如List和Map。

具体使用

设置统一资源标识符(URI)

  • 定义:

    URI:Uniform Resource Identifier,即统一

Android ContentProvider实战开发教程 本文还有配套的精品资源,点击获取 简介:在Android开发中,ContentProvider是核心组件之一,用于实现数据共享和跨应用数据访问。本资源详细介绍了ContentProvider的工作机制,包括Provider类的实现、UriMatcher的使用、ContentContract的定义、SQLite数据库的集成,以及权限管理等关键知识点。同时提供了创建Conten... 阅读详情

相关推荐

自定义contentProvider

在android中自定义一个ContentProvider大致需要四步:1,定义数据的MetaData;2,定义一个类继承ContentProvider;3,覆写自定义类中的getType(),onCreate(),insert(),delete(),update(),query()六个方法;4,在AndroidManifest.xml文件中配置我们自定义的ContentProvider

高德地图+Three.js实战:手把手教你打造数字农场3D可视化大屏(附完整源码)

本文详细介绍了如何利用高德地图JS API与Three.js技术栈,构建一个功能强大的数字农场3D可视化大屏。文章从技术选型、架构设计出发,深入讲解了坐标对齐、图层管理、性能优化等核心工程实践,并提供了完整的模块化代码示例,旨在为智慧农业及类似场景的3D地理可视化项目提供一套可复用的解决方案。

k8s6orchestrator的博客 890

C#读取CAD文件(dwg/dxf)并处理

项目要求识别CAD图纸(图纸内容与现实事物比例是1:1)中的内容,并提取出一些关键信息。这里的CAD图纸是指CAD文件,包含多种格式,dwg/dxf/dwf/stl/pdf等等。识别其中内容,主要指文件中的图元信息(也叫实体Entity),指线段、圆弧、矩形等图形元素。得到图元基础信息(比如长度、坐标、粗细)后,进一步做处理(如得到交点、得到线段间间隔、圆弧与线段切点等)。听起来有点难,因为作为软件工程师,对CAD相关事物并不了解,它是未知的;

三千幻想乡 1万+

ABAP动态填充Word模板:基于cl_docx_document的XML替换方案

本文详细介绍了ABAP中基于cl_docx_document类的动态Word模板填充方案。该方案通过直接操作DOCX文件的XML核心,完美解决了传统OLE/DOI方法在格式保真、性能和后台运行方面的痛点,是实现复杂、批量Word文档生成的优雅解决方案。

gpt4scribbler的博客 526

OpenClaw的引导配置(onboard)流程

脚本安装的直接安装完到引导配置界面,其他安装方式还可以直接命令到配置。

supersolon的专栏 1327

ABB机器人绝对精度实战:从焊接路径优化到TCP控制(附配置步骤)

本文深入探讨了ABB机器人绝对精度在焊接路径优化中的核心价值。通过对比重复定位精度,阐明绝对精度如何补偿机械误差,确保TCP在整个运动路径上的轨迹精度。文章提供了从示教器激活绝对精度功能的详细配置步骤,并分享了针对焊接抖动和实现0.2mm路径精度的进阶调优技巧,包括TCP标定、伺服参数优化与系统维护。

weixin_29053073的博客 352

从安装Eclipse 开始 开发第一个 CDS View

一篇超级简单快速的 创建CDS VIEW 入门步骤介绍文章。

IT小职员 4251

基于STM32的智能鞋柜系统设计与实现

摘要:本文设计并实现了一种基于STM32F103C8T6单片机的智能鞋柜系统。该系统通过DHT11温湿度传感器、PM2.5粉尘传感器和MQ-135空气质量传感器构建多维度环境监测网络,结合光电红外传感器和光敏传感器实现柜门状态识别与智能照明。系统采用分层控制策略,当温度低于15℃或湿度高于65%时自动启动加热和通风,PM2.5超标时启动通风,污染物浓度升高时激活紫外线杀菌。创新性地实现了柜门状态与紫外线消毒的双保险互锁机制,确保使用安全。测试结果表明,系统温湿度控制精度达±0.4℃/±2.0%RH,PM2.

3254968421的博客 253

YOLOv9分割训练自己数据和推理训练好模型,并教你使用Labelme工具标注数据(附YOLOv9分割模型结构图),全网最详细教程

YOLOv9 通过研究数据传输时的信息丢失问题,提出了可编程梯度信息(PGI)和通用高效层聚合网络(GELAN)架构,提高了参数利用率和模型性能。与 SOTA 方法相比,GELAN 仅使用传统卷积算子即可实现更好的参数利用率。PGI 适用于从轻型到大型的各种模型,使从头开始训练的模型能够获得更好的结果。YOLOv9 被评价为新的 SOTA 实时目标检测器。接下来本文手把手教你训练自己分割数据集和推理训练好的分割模型。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1495

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: 四大组件—Activity
下一篇: 四大组件—Serivce
<天各一方>
博客等级 码龄6年 17粉丝 17原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值