ContentProvider虽说我们平时用的并不多,但是作为安卓四大组件之一,其地位不容忽视。ContentProvider的作用是为不同的应用之间数据共享,提供统一的接口,我们知道安卓系统中应用内部的数据是对外隔离的,要想让其它应用能使用自己的数据(例如通讯录)这个时候就用到了ContentProvider。
ContentProvider如何共享数据(《与妻书》最出名的一句话是什么?《与妻书》最出名的一句话是:吾今与汝无言矣!吾居九泉之下,遥闻汝哭声,当哭相和也。吾平日不信有鬼,今则又望其真有。今人又言心电感应有道,吾亦望其言是实,则吾之死,吾灵尚依依旁汝也,汝不必以无侣悲!)ContentProvider通过uri来标识其它应用要访问的数据,通过ContentResolver的增、删、改、查方法实现对共享数据的操作。还可以通过注册ContentObserver来监听数据是否发生了变化来对应的刷新页面。下面分别说说每个类的作用。
ContentProvider讲解ContentProvider是一个抽象类,如果我们需要开发自己的内容提供者我们就需要继承这个类并复写其方法,需要实现的主要方法如下:public boolean onCreate()
在创建ContentProvider时使用public Cursor query()
用于查询指定uri的数据返回一个Cursorpublic Uri insert()
用于向指定uri的ContentProvider中添加数据public int delete()
用于删除指定uri的数据public int update()
用户更新指定uri的数据public String getType()
用于返回指定的Uri中的数据MIME类型
数据访问的方法insert,delete和update可能被多个线程同时调用,此时必须是线程安全的
其它应用可以通过ContentResolver来访问ContentProvider提供的数据,而ContentResolver通过uri来定位自己要访问的数据,所以我们要先了解uri。URI(Universal Resource Identifier)统一资源定位符,如果您使用过安卓的隐式启动就会发现,在隐式启动的过程中我们也是通过uri来定位我们需要打开的Activity并且可以在uri中传递参数。URI的格式如下:[scheme:][//host:port][path][?query]
单单看这个可能我们并不知道是什么意思,下面来举个栗子就一目了然了
URI:http://www.baidu.com:8080/wenku/jiatiao.html?id=123456&name=jack
scheme:根据格式我们很容易看出来scheme为http
host:www.baidu.com
port:就是主机名后面path前面的部分为8080
path:在port后面?的前面为wenku/jiatiao.html
query:?之后的都是query部分为 id=123456$$name=jack
uri的各个部分在安卓中都是可以通过代码获取的,下面我们就以上面这个uri为例来说下获取各个部分的方法:
getScheme() :获取Uri中的scheme字符串部分,在这里是http
getHost():获取Authority中的Host字符串,即 www.baidu.com
getPost():获取Authority中的Port字符串,即 8080
getPath():获取Uri中path部分,即 wenku/jiatiao.html
getQuery():获取Uri中的query部分,即 id=15&name=du
到这里关于uri的部分就讲解完了,下面让我们通过一个自定义ContentProvider实例来说下自定义ContentProvider的流程以及怎么使用ContentResolver操作ContentProverb的数据
我们先创建一个项目叫contentprovider,在该项目中我们自定义一个StudentContentProvider的类用来共享该应用的数据,自定义StudentContentProvider的代码如下:
public class StudentContentProvider extends ContentProvider { //这里的AUTHORITY就是我们在AndroidManifest.xml中配置的authorities private static final String AUTHORITY = "com.jrmf360.studentProvider"; //匹配成功后的匹配码 private static final int MATCH_CODE = 100; private static UriMatcher uriMatcher; private StudentDao studentDao; //数据改变后指定通知的Uri private static final Uri NOTIFY_URI = Uri.parse("content://" + AUTHORITY + "/student"); static { //匹配不成功返回NO_MATCH(-1) uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); //添加我们需要匹配的uri uriMatcher.addURI(AUTHORITY,"student", MATCH_CODE); } @Override public boolean onCreate() { studentDao = StudentDao.getInstance(getContext()); return false; } @Nullable @Override public Cursor query(@NonNull Uri uri, @Nullable String[] projection, @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String sortOrder) { int match = uriMatcher.match(uri); if (match == MATCH_CODE){ Cursor cursor = studentDao.queryStudent(); return cursor; } return null; } @Nullable @Override public String getType(@NonNull Uri uri) { return null; } @Nullable @Override public Uri insert(@NonNull Uri uri, @Nullable ContentValues values) { if (uriMatcher.match(uri) == MATCH_CODE){ studentDao.insertStudent(values); notifyChange(); } return null; } @Override public int delete(@NonNull Uri uri, @Nullable String selection, @Nullable String[] selectionArgs) { if (uriMatcher.match(uri) == MATCH_CODE){ int delCount = studentDao.deleteStudent(); notifyChange(); return delCount; } return 0; } @Override public int update(@NonNull Uri uri, @Nullable ContentValues values, @Nullable String selection,
扫码加微信详细咨询太和智慧养老产品和平台服务!
版权声明:
---------------------------------------------------------------
所有信息来源于互联网,本文的版权归原作者所有,不代表本网观点和立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 81480447@qq.com 举报,一经查实,本站将立刻删除。
扫码加微信详细咨询太和智慧养老产品和平台服务!
养老资讯
- 双子座如何看待试婚
- 双子座2015年1月运势
- 金牛座不爱你的原因
- 金牛座如何远离初老症
- 逼金牛座结婚的后果
- 金牛座感情破裂后的表现
- 金牛座整人招数
- 金牛座最向往的生活方式
- 当金牛座的爱情受了伤害
- 金牛座2014年9月18
- 让金牛座退避三舍的恋人类
- 嫁给金牛座的老公哪方面最
- 金牛座女生专属魅惑招数
- 金牛座男追求者源源不绝的
- 金牛男拜倒石榴裙下的放电
- 金牛座的疗伤情歌
- 金牛座为何要吃零食
- 金牛座2014年9月24
- 金牛座怎么看待姐弟恋
- 金牛座暗恋转正的秘决
- 专属金牛座女的妩媚迷人术
- 金牛座心中的一生一世
- 金牛座的一个表情证明你爱
- 金牛座【MM事后表现】
- 金牛座浪漫手段
- 金牛座职场缺氧咋抢救
- 金牛座一周健康运0921
- 金牛座爱无能的表现
- 稳住金牛座男生不安分的心
- 双子座在职场的闪光点
- 假如双子座生在古代……
- 双子座一人一部电影
- 双子座特质的描写
- 双子座分手犹豫多久
- 双子座加班千姿百态
- 狮子男的泪点在何处
- 射手座假后的甜蜜约会吉日
- 射手座被放鸽子之后
- 狮子座最易中枪的缺点
- 金牛座为人处事的原则
助老机构介绍
姓名:
年龄:
电话: