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中会监听该值的变化,然后从数据库中将该值获取,然后再进行其他操作。

ContentProvider要点复习的更多相关文章

  1. Fragment要点复习

    做系统时间久了,应用层的很多东西都忘了,但是基础还是得巩固,下面对fragment相关的知识点简单整理一下. 一.fragment的引入 fragment是从Android3.0(API level ...

  2. javaweb要点复习 jsp和servlet

    jsp:就是java server page ,  html嵌入java  ,所以更方面显示(V) serlet,就是服务器端小程序 java中嵌入html,更方面业务处理. jsp执行过程 1)客户 ...

  3. C++基本要点复习--------coursera程序设计实习(PKU)的lecture notes

    因为一些特性复杂,很多时候也用不到一些特性,所以忘记了,算是随笔,也当作一个临时查找的手册.没有什么顺序,很杂. 1.构造函数通过函数重载的机制可以有多个(不同的构造函数,参数个数,或者参数类型不同. ...

  4. C#字符串要点(复习专用)

    一.字符串 通过string定义一个字符串,或者通过String类来创建对象. 通过new String() 创建有一下几种构造函数(从元数据),以此顺序创建string: // // 摘要: // ...

  5. OpenGL复习要点

    [OpenGL要点复习] 1.和像素有关的信息(例如像素的颜色)组织成位平面 (bitplane)的形式,位平面又可以组织成帧缓冲区(framebuffer)的形式.位平面是一块内存区域,保存了屏幕上 ...

  6. Sitecore® 8.2 Professional Developer考试心得

    因工作原因入了Sitecore的坑.. 不了解Sitecore认证考试的同学请移步: http://www.cnblogs.com/edisonchou/archive/2018/08/17/9488 ...

  7. re模块逐步进阶

    Windows 10家庭中文版,Python 3.6.4, 正则表达式,自己一直的水平是 知道,但不熟悉,简单的也能写,复杂的就需要看资料了,距离灵活运用还是差那么一些的. 于是,今天(180831) ...

  8. 关于ActiveMQ、RocketMQ、RabbitMQ、Kafka一些总结和区别

    这是一篇分享文 转自:http://www.cnblogs.com/williamjie/p/9481780.html  尊重原作,谢谢 消息队列 为什么写这篇文章? 博主有两位朋友分别是小A和小B: ...

  9. Hadoop之MapReduce学习笔记(二)

    主要内容: mapreduce编程模型再解释: ob提交方式: windows->yarn windows->local : linux->local linux->yarn: ...

随机推荐

  1. 高效Web开发的10个jQuery代码片段

    原文转载:http://www.codeceo.com/article/10-jquery-snippets-web-dev.html

  2. String类的构造方法详解

    package StringDemo; //String类的构造方法详解 //方法一:String(); //方法二:String(byte[] bytes) //方法三:String (byte[] ...

  3. JSP计算器

    <%@ page language= "java" contentType="text/html;charset=UTF-8" %><html ...

  4. GTD

    这两天坚持GTD,四分象限法管理时间,感觉学习专注度明显提升,一直没完成的马士兵JAVA基础整到第八章了,继续保持,1.13号前争取11章全整完. 3个点支撑起你的职业发展:技术,管理(管理自己.管理 ...

  5. 动态设置 button的 name 的话 闪动的问题 解决

    其实 只要把  button设置成  custom 的  type 的话   就会 解决这个问题

  6. csdn的app打开贴子显示空白?

    csdn或者虎扑的app打开贴子显示空白,卸载后重装仍然有同样的问题. 可能是android系统的WebView版本太落后. 打开应用市场,更新WebView就可以解决了.

  7. UIAlertViewController的使用

    UIAlertViewController是苹果自带的信息提示框,仅在iOS8.0以后可以使用 NS_CLASS_AVAILABLE_IOS(8_0) @interface UIAlertContro ...

  8. object.bind()方法的低版本兼容

    Function.prototype.bind= function(obj){ var _self = this, args = arguments; return function() { _sel ...

  9. mysql存储过程 --游标的使用 取每行记录 (多字段)

    delimiter $ create PROCEDURE phoneDeal() BEGIN DECLARE id varchar(64); -- id DECLARE phone1 varchar( ...

  10. EF6配合MySQL或MSSQL(CodeFirst模式)配置指引

    一.新建一个解决方案,包含两个项目:EF6CodeFirstMySQL.Model(动态库项目),EF6CodeFirstMySQL.Tests(控制台应用) 二.通过NuGet将EntityFram ...