Android ContentProvider

  次阅读 作者:智能小宝 来源:互联网 2016-01-14 12:29 我要评论(0)

ContentProvider介绍:

Android ContentProvider是数据对外的接口,我们只需通过使用ContentProvider访问数据而不需要关心数据具体的存储及访问过程,这样既提高了数据的访问效率,同时也保护了数据。Activity类中有一个继承自ContentWapper的getContentResolver()无参数方法,该方法返回一个ContentResolver对象,通过调用其query、insert、update、delete方法访问数据。这几个方法的第一个参数均为URI型,用来标识资源。

总结:

1、ContentProvider为存储和读取数据提供了统一的接口

2、使用ContentProvider,应用程序可以实现数据共享

3、android内置的许多数据都是使用ContentProvider形式,供开发者调用的(如视频,音频,图片,通讯录等)

Uri介绍:

1、每一个ContentProvider都拥有一个公共的Uri,这个Uri用于表示这个ContentProvider提供的数据

2、Android所提供的ContentProvider都存放在andriod.provider这个包里面

Android的ContentProvider URI有固定的形式:content://contract/people

前缀:固定为content : //

认证:contract 资源的唯一标识符

路径:people 具体的资源类型

Android中广泛应用URI,而不是URL。URL标识资源的物理位置,相当于文件的路径;而URI则是标识资源的逻辑位置,并不提供资源的具体位置。比如说电话薄中的数据,如果用URL来标识的话,可能会是一个很复杂的文件结构,而且一旦文件的存储路径改变,URL也必须得改动。但是若是URI,则可以用诸如content://contract/people这样容易记录的逻辑地址来标识,而且并不需要关心文件的具体位置,即使文件位置改动也不需要做变化,当然这都是对于用户来说,后台程序中URI到具体位置的映射还是需要程序员来改动的。

ContentProvider提供的函数:

1、query() 查询

2、insert() 插入

3、update() 更新

4、delete()删除

5、getType() 得到数据类型

6、onCreate() 创建时的回调函数

实现ContentProvider的过程:

1、定义一个COTENT_URI常量

2、定义一个类,继承ContentProvider

3、实现query(),delete(),update(),insert(),onCreate(),getType()方法

4、在AndroidMainfest.xml中申明

下面以两个实例(一个是ContentProvider所在的应用,另一个是使用ContentProvider的应用),说明如何使用ContentProvider

ContentProvider所在的应用

1、定义一个类,里面定义一些常量

package com.yyl.android;

import android.net.Uri;

import android.provider.BaseColumns;

public class MyUsers {

public static final String AUTHORITY ="com.yyl.android.MyContentProvider";

// BaseColumn类中已经包含了_id字段

public static final class User implements BaseColumns {

// 定义Uri

public static final Uri CONTENT_URI = Uri.parse("content://"

+ AUTHORITY);

// 定义数据表列

public static final String USER_NAME = "USER_NAME";

}

}

2、定义一个继承ContentProvider的子类,实现其方法

package com.yyl.android;

import android.content.ContentProvider;

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...