Android面试简集(ContentProvider)

一·什么是ContentProvider?它可以做什么?

·ContentProvider是四大应用组件之一

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

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

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

举例

功能需求: 一个应用需要访问另一个应用的数据库表数据

实际情况: 一个应用的数据库文件是应用私有的, 其它应用不能直接访问

应用与应用间数据共享

二·使用ContentProvider

·编写ContentProvider子类

class StudentContentProvider extends ContentProvider {

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

}

·在manifest.xml中注册

        android:name=".StudentContentProvider"

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

        android:exported="true"

/>

·得到其对象

context.getContentResolver()

·使用其对象

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

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

注册uri的监听

registerContentObserver(Uri uri, boolean notify,ContentObserver observer)

解注册uri的监听

unregisterContentObserver(ContentObserver observer)

通知监听器

notifyChange(Uri uri, ContentObserver observer)

常用API


ContentProvider : 内容提供者类

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

public abstract boolean onCreate();

//查询表数据

Cursor query(Uri uri, String[] projection,String selection, String[] selectionArgs)

//插入表数据

Uri insert(Uri uri, ContentValues values);

//删除表数据

int delete(Uri uri, String selection, String[] selectionArgs)

//更新表数据

update(Uri uri, ContentValues values, String selection,String[] selectionArgs);

ContentResolver: 内容提供者的解析类

//得到它的对象

context.getContentResolver()

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

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

//注册uri的监听

registerContentObserver(Uri uri, boolean notify,ContentObserver observer)

//解注册uri的监听

unregisterContentObserver(ContentObserver observer)

//通知监听器

notifyChange(Uri uri, ContentObserver observer)

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

//得到其对象

Uri static parse(String uriString)


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

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

C : 对应于哪张表 student

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

UriMatcher : 用于匹配Uri的容器

//添加一个合法的URI

void addURI(String authority, String path, int code)

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

int match(Uri uri)

ContentUris : 解析uri的工具类

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

long parseId(Uri contentUri)

//添加id到指定的uri中

Uri withAppendedId(Uri contentUri, long id)

你可能感兴趣的:(Android面试简集(ContentProvider))