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

一、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部分: 



你可能感兴趣的:(android基础学习)