【contentprovider系列7】自定义contentprovider

来源:互联网 发布:淘宝上怎么收藏店铺 编辑:程序博客网 时间:2024/05/23 00:08

  其实自定义provoder.只是在于db的一套增删改查和contentprovider之间的映射关系,这点搞清楚了就没问题了。此外,使用自定义的provider的话,需要注册清单文件(android四大组件都需要注册清单文件),还有注意设置属性expert。

这里写图片描述

一、自定义contentprovider为什么定义静态代码块

  首先静态代码块的作用是,只执行一次,不管是new还是直接类名。 构造函数用于传递或者初始化,如果想要这个类的方法或者变量,必须new初始化。 静态代码块: 用于初始化一些操作,例如数据库连接、配置文件读取等。

二、自定义contentprovider,数据库不能关闭

  Android ContentProvider增删改查都不可以close db

三、ContentProvider何时创建?

1、ContentProvider所在的Process启动了,ContentProvider就会在ActivityThread中启动。

2、从数据共享的角度出发,ContentProvider应该是Android在系统启动时就创建了,否则就谈不上数据共享了。这就要求在AndroidManifest.XML中使用元素明确定义。

四、UriMatch对象

  UriMatch对象的作用是将URI匹配到对应的表(就数据库而言),其使用步骤如下:

  1. 通过new UriMatcher(UriMatcher.NO_MATCH); 实例化,常量NO_MATCH作为参数表示不匹配任何URI;

  2. 实例化后调用addURI方法注册URI,该方法有三个参数,分别需要传入URI字符串的authority部分、path部分以及自定义的整数code三者;

  3. 在其它地方调用match方法匹配相应的URI,需要传入Uri作为唯一的参数,返回上述自定义的code值。

  至于其初始化的位置,如前所述,网上绝大多数示例都将其放入静态域中实例化。

五、参考

Android ContentProvider少了个close db的操作:http://blog.sina.com.cn/s/blog_68d72c9b01015k2a.html

自定义ContentProvider的一些细节探究:http://blog.csdn.net/sadfishsc/article/details/7419573

关于contentprovider最通俗的理解:http://blog.csdn.net/murphykwu/article/details/7953102

1 0
原创粉丝点击