ContentProvider要点复习
2015-08-19 22:03
573 查看
ContentProvider要点复习
ContentProvider作为四大组件之一,发挥着举足轻重的作用。与之相关联的另外两个类分别是ContentResolver和ContentObserver。ContentProvider
内容提供者,暴露数据和操作数据的方法给外界,如联系人、短信、多媒体等数据库中的数据,是一种数据共享的方法。使用ContentProvider需要继承该类并注册在清单文件,并且指明其authorities属性以指定外界的访问“路径”,exported属性指定是否暴露出去。
继承之后需要复写onCreate insert delete update query 等方法。其中Uri是的格式可以是
content://<authorities>/<资源>/<ID>
Android提供了管理URI的工具类UriMatcher和ContentUris。UriMatcher提供了两个常用的方法void addURI(String autority, String path, int code),int match()。ContentUris提供了withAppendedId(Uri id),paresId(uri)。
ContentProvider的生命周期只有一个方法onCreate,并且只有在第一次访问时会被回调。
ContentResolver
Context中提供了getContentResolver()方法获取ContentResolver实例,然后让调用该实例的query insert等方法进行操作,会调用到相应内容提供者的相应的方法。ContentObserver
内容观察者,当其监听的数据发生改变的时候,会回调其中的onChange方法进行相应操作的处理。getContentResolver().registerContentObserver(uri, new ContentObserver{ public void onChange(boolean selfChange){ // xxx } });
在应用层中对该组件的使用较少,也更少会用三方应用让自己的数据暴露出去。在系统层中,对内容观察者的使用不在少数,比如在设置中打开或关闭了某个开关,可能只是会更改数据库中的一个值,而并不调用framework提供的接口,然后在framework中会监听该值的变化,然后从数据库中将该值获取,然后再进行其他操作。
相关文章推荐
- PHP单例模式
- laravel队列-让守护进程处理耗时任务
- 在php中判断一个请求是ajax请求还是普通请求的方法
- PHP:echo print var_dump()和print_r()的区别
- laravel controller
- php环境搭建以及优化
- PHP与JAVA通信
- laravel 登录验证
- PHP实现用户登录和注册的功能
- php unset函数执行
- php关于重载函数的笔记
- PHP RSA加解密示例(转)
- EF里的继承映射关系TPH、TPT和TPC的讲解以及一些具体的例子
- rsa互通密钥对生成及互通加解密(c#,java,php)
- Yii2框架的几个隐蔽地方
- php的html_entity_decode函数
- [PHP]Yii2框架的坑
- rsa互通密钥对生成及互通加解密(c#,java,php)
- 提高php编程效率技巧
- php生成图片验证码-附五种验证码