android学习笔记55——ContentProvider_2
实现ContentProvider
创建ContentProvider的步骤:
1.开发一个ContentProvider的子类,该子类需要实现增、删、改、查等方法;
2.在AndroidMainfest.xml文件中注册该ContentProvider
开发ContentProvider时所实现的增、删、改、查方法都需要一个Uri参数,该参数决定了对那个Uri执行数据操作。
为了确定该ContentProvider实际能匹配的Uri,以及确定每个方法中Uri参数所操作的数据,android系统提供了UriMatcher工具类。
Uri工具类——UriMatcher主要提供了如下两个方法:
| void addURI(String authority,String path,int code) | 该方法用于向UriMatcher对象注册Uri.其中authority和path组成一个Uri,而code则代表该Uri对应的标识码 |
| int match(Uri uri) | 根据前面注册的Uri来判断指定Uri对应的标识码。如果找不到匹配的标识码,该方法将会返回-1 |


后续补充.....
监听ContentProvider的数据改变
ContentObserver简介
ContentProvider无论实现insert()、delete()、update()方法中的任何一个,只要该方法导致了ContentProvider里数据的改变,程序就调用了如下代码:
getContent.getContentResolver().notifyChange(uri,null)——用于通知所有注册在该Uri上的监听者,通知该ContentProvider所共享的数据发生了改变。
为了在应用程序中监听ContentProvider数据的改变,需要利用Android提供的ContentObserver基类.
监听ContentProvider数据改变的监听器需要继承ContentObserver类,并重写该基类所定义的onChange(boolean selfChange)
——当其监听的ContentProvider的数据发生改变时,onChange将会被触发。
为了监听指定的ContentProvider的数据变化,需要通过ContentResolver向指定的Uri注册ContentObserver监听器。
ContentResolver提供如下方法来注册监听器:
registerContentObserver(Uri uri,boolean notifyForDescendents,ContentObserver observer):
uri——该监听器所监听的ContentProvider的Uri;
notifyForDescendents——如果该参数设置为true,假设注册监听的Uri为content:abc,那么Uri为Content://abc/xyz、content://abc/xyz/foo的数据改变时也会触发该监听器;
如果该参数设置为false,假设注册监听的Uri为content:abc,那么只有content:abc的数据改变时也会触发该监听器;
observer——监听器实例。
EG:如下代码片段可用于为指定Uri注册监听器:getContentResolver().registerContentObserver(Uri.parse("content://sms"),true,new SmsOberver(new Handler()));
实例如下:
监听用户发出的短信


总结:ContentProvider的本质就是一个“网站”,其可以把应用程序的数据按照“固定规范”暴露出来,其他应用程序就可通过ContentProvider暴露的接口来操作内部的数据了。
可理解为:ContentProvider是Android系统内不同程序之间进行数据交换的标准接口。
ContentResolver用于操作ContentProvider提供的数据;
ContentObserver用于监听ContentProvider的数据改变;
ContentProvider则是所有ContentProvider组件的基类。
android学习笔记55——ContentProvider_2的更多相关文章
- Android 学习笔记之Volley(七)实现Json数据加载和解析...
学习内容: 1.使用Volley实现异步加载Json数据... Volley的第二大请求就是通过发送请求异步实现Json数据信息的加载,加载Json数据有两种方式,一种是通过获取Json对象,然后 ...
- Android学习笔记进阶之在图片上涂鸦(能清屏)
Android学习笔记进阶之在图片上涂鸦(能清屏) 2013-11-19 10:52 117人阅读 评论(0) 收藏 举报 HandWritingActivity.java package xiaos ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- Android学习笔记之JSON数据解析
转载:Android学习笔记44:JSON数据解析 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,为Web应用开发提供了一种 ...
- udacity android 学习笔记: lesson 4 part b
udacity android 学习笔记: lesson 4 part b 作者:干货店打杂的 /titer1 /Archimedes 出处:https://code.csdn.net/titer1 ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- Android学习笔记之Activity详解
1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】Pro Android学习笔记(九八):BroadcastReceiver(2):接收器触发通知
文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.sina.com.cn/flowingflying或作者@恺风Wei-傻瓜与非傻瓜 广播接 ...
随机推荐
- ThreadLocal工作原理
原文出处: imzoer 在这篇文章中,总结了一下面试过程中遇到的关于ThreadLocal的内容.总体上说,这样回答,面试算是过得去了.但是,这样的回答,明显仅仅是背会了答案,而没有去研究Threa ...
- NetworkComms V3 之自定义对象
NetworkComms网络通信框架序言 能够发送自定义对象,并且在发送的时候对发送的对象进行加密,压缩是networkComms v3框架的一个重要特性. 具体可以参考源码中 ExampleCons ...
- ajaxsearch要点1
ajaxsearch中必须将form的class定义为pagerForm,才能在foot中submit按钮得到值
- 64位 ubuntu android studio gradle 权限不够 缺少文件和权限导致
安装 32位 库文件 sudo apt-get install lib32z1 给文件夹加权限 chmod 777 -R SDK chmod 777 -R android-studio -R表示所有 ...
- 1、android源代码下载及目录分析,和eclipser的跟踪
1.在eclipse中跟踪源代码:假如对mainactivity.java里面的activity按Ctrl+鼠标左键(前提已经导入android源代码:方法1:在项目点击右键,然后找到properti ...
- 3、通过挂在系统光盘搭建本地yum仓库的方法
1. mkdir xxx #新建文件夹 (新建一个挂载需要的文件夹) .配置本地yum源(挂载光盘) .进入 yum.repos.d .ls (查看当前文件夹全部的文件) 并 mv 修改 除Med ...
- JDBC中的ResultSet
ResultSet:结果集.存放数据库中的数据,可以将它想象成一张数据表,通过Statement对象中的executeQuery()方法获得 import com.mysql.jdbc.Stateme ...
- docker 源码分析 二(基于1.8.2版本),docker client与daemon交互
(2) 那我们通过docker客户端发送一个命令,docker是怎样接收到并处理的呢,我们就举个例子来看一下,比如docker pull 命令: 我们回到 docker/docker.go 中,在上一 ...
- 跨服务器之间的session共享
跨服务器之间的Session共享方案需求变得迫切起来,最终催生了多种解决方案,下面列举4种较为可行的方案进行对比探讨: 1. 基于NFS的Session共享 NFS是Net FileSystem的简称 ...
- python数据结构与算法——归并排序
归并排序: 原理与C语言实现 参考:白话经典算法系列之五 归并排序的实现 1. 容易对有序数组A,B进行排序. 2. 为了使得A,B组内数据有序:可以将A,B组各自再分成二组. 3. 经过不断分组,当 ...