Android核心技术之(9)---四大应用组件之ContentProvider

来源:互联网 发布:什么是访客网络设置 编辑:程序博客网 时间:2024/06/18 13:44

1.ContentProvider是什么?


•ContentProvider是四大应用组件之一

•当前应用使用ContentProvider将数据库表数据操作暴露给其它应用访问

•其它应用需要使用ContentResolver来调用ContentProvider的方法

•它们之间的调用是通过Uri来进行交流的

2.相关API


•ContentProvider : 内容提供者类

//provider对象创建后调用(应用安装成功或手机启动完成)

publicabstract boolean onCreate();

//查询表数据

Cursorquery(Uri uri,String[] projection,Stringselection, String[] selectionArgs)

//插入表数据

Uri insert(Uri uri, ContentValuesvalues);

//删除表数据

intdelete(Uri uri,String selection, String[] selectionArgs)

//更新表数据

update(Uriuri, ContentValuesvalues, String selection,String[]selectionArgs);


•ContentResolver: 内容提供者的解析类

//得到它的对象

context.getContentResolver()

//调用provider进行数据库CRUD操作

Insert()、delete()、update()、query()

//注册uri的监听

registerContentObserver(Uriuri, booleannotify,ContentObserverobserver)

//解注册uri的监听

unregisterContentObserver(ContentObserverobserver)

//通知监听器

notifyChange(Uriuri, ContentObserverobserver)


•Uri:包含请求地址数据的类

//得到其对象

Uristatic parse(String uriString)



A :是一个前缀,表示是由ContentProvider提供,固定不变

B :authority, 标识是哪个Provider,不同的Provider此部分必须不同。

C :对应于哪张表 student

D :id值,对应表中的哪条记录


•UriMatcher : 用于匹配Uri的容器

//添加一个合法的URI

void addURI(Stringauthority, String path, intcode)

//匹配指定的uri, 返回匹配码

intmatch(Uri uri)


•ContentUris : 解析uri的工具类

//解析uri, 得到其中的id

long parseId(UricontentUri)

//添加id到指定的uri中

Uri withAppendedId(UricontentUri,long id) 


3.编写ContentProvider的基本步骤

•编写ContentProvider子类

classStudentContentProviderextends ContentProvider{

  //实现inert、delete、update和query等方法

}


•在manifest.xml中注册

<provider

         android:name=".StudentContentProvider"

         android:authorities="com.atguigu.provider.studentprovider"

  android:exported="true"/>


•得到其对象

context.getContentResolver()


•使用其对象

inert()、delete()、update()和query()

  系统自动找到匹配的ContentProvider对象来操作数据

registerContentObserver(Uriuri, booleannotify,ContentObserverobserver)

  注册uri的监听

unregisterContentObserver(ContentObserverobserver)

  解注册uri的监听

notifyChange(Uriuri, ContentObserverobserver)

  通知监听器







0 0
原创粉丝点击