android四大组件之-Broadcast的使用、Content Provider的使用

本文详细介绍了Android系统中的广播(Broadcast)机制及其使用方法,包括注册、发送和接收广播事件。同时,阐述了ContentProvider机制在跨应用共享数据中的作用,包括如何注册、查询和使用ContentProvider,以及其相关组件的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Broadcast的使用

    在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制;这些组件甚至是可以位于不同的进程中。由于广播的发送者和接收者事先不需要知道对方的存在,从而系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。

    Broadcast是广播,Android中用于接收广播的组件是BroadcastReceiver,这个组件接收到特定的广播之后就可以进行处理特定的任务。

    Android中的广播事件有两种,一种就是系统广播事件,比如:ACTION_BOOT_COMPLETED(系统启动完成后触发),ACTION_TIME_CHANGED(系统时间改变时触发),ACTION_BATTERY_LOW(电量低时触发)等等。另外一种是我们自定义的广播事件。

 

    1)注册广播事件:注册方式有两种,一种是静态注册,就是在AndroidManifest.xml文件中定义,注册的广播接收器必须要继承BroadcastReceiver;另一种是动态注册,是在程序中使用Context.registerReceiver注册,注册的广播接收器相当于一个匿名类。两种方式都需要IntentFIlter。

    2)发送广播事件:通过Context.sendBroadcast来发送,由Intent来传递注册时用到的Action。

    3)接收广播事件:当发送的广播被接收器监听到后,会调用它的onReceive()方法,并将包含消息的Intent对象传给它。onReceive中代码的执行时间不要超过5s,否则Android会弹出超时dialog。

二、Content Provider的使用

    Android中的Content provider机制可支持在多个应用中存储和读取数据。这也是跨应用共享数据的方式之一,还有文件,sharePreference,SQLite数据库等方式存储共享数据库,但是ContentProvider更好的提供了数据共享接口的统一性。

    Android提供了一些主要数据类型的Content provider,比如音频、视频、图片和私人通讯录等。可在android.provider包下面找到一些android提供的Content provider。可以获得这些Content provider,查询它们包含的数据,当然前提是已获得适当的读取权限。

    使用方法:

    在android中,通常用一个URL来标识一个ContentProvider,与URL相关的类有Uri, UriMatcher, ContentUris, TextUtils,分述如下:

 

    Uri:主要组成部分:scheme + 主机名或authority + path


    1)ContentProvider(内容提供者)的scheme已经由Android所规定, scheme为:content://

    2)主机名(或叫Authority)用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。 

    3)路径(path)可以用来表示我们要操作的数据,路径的构建应根据业务而定,如下:

          要操作person表中id为10的记录,可以构建这样的路径:/person/10

          要操作person表中id为10的记录的name字段, person/10/name

          要操作person表中的所有记录,可以构建这样的路径:/person

          要操作xxx表中的记录,可以构建这样的路径:/xxx

 

    UriMatcher: 用于解析和匹配Uri,它的用法如下:

    1)注册需要匹配的Uri路径以及返回的匹配码


    2)对传入的Uri进行解析


    ContentUris: 用于获取Uri路径后面的ID部分,它有两个比较实用的方法:

    1)withAppendedId(uri, id)用于为路径加上ID部分:


 

    2)parseId(uri)方法用于从路径中获取ID部分: 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值