ContentProvider
来源:互联网 发布:2016网络彩票开售 编辑:程序博客网 时间:2024/05/17 22:48
- 数据共享
ContentProvider,这是一种不同应用之间共享数据的标准API:
当应用希望提供数据时,就提供Contentprovider
其他应用通过ContentResolver来操作
注意:
ContentProvider需要在AndroidManifest.xml中注册
一旦应用提供CP,不论应用启动与否,都可被操作
ContentProvider是单例模式的,多个ContentResolver请求数据时,是委托给同一个CP来操作的。 - URI
*Uri举例:content://org.edu.provider/words
content://:这部分是Android固定的
org.edu.provider:这部分是ContentProvider中的authority
words:资源部分,根据资源不同这部分不同*
通过Uri提供的静态方法parse()来实现将字符串转换为Uri
Uri uri = Uri.parse(“content://org.edu.p../words”) - 创建一个ContentProvider的步骤
定义自己的类继承ContentProvider类boolean onCreate()Uri insert(uri, values)int delete(uri, selection, selectionargs)int update(uri, values, selection, selectionargs)Cursor query(uri, values,selection,selectionargs,sortorder)String getType(uri)向Android系统注册ContentProvider<provider android:name="“android:authorities=""></provider>
- 应用通过ContentResolver操作CP暴漏的数据
获得ContentResolver的方法:
Content.getContentResolver()
通过ContentResolver操作数据:
insert(uri, values)
delete(uri , where , selectionargs)
update(uri, values , where ,selectionargs)
query(uri,projection, selection ,selectionargs,order)- 操作URI的工具类
ContentUris
withAppendedId(uri,id):用于为路径加上ID部分Uri uri = Uri.parse("content://com.test.provider.personprovider/person")Uri resultUri = ContentUris.withAppendedId(uri, 5);//生成后的Uri为:content://com.test.provider.personprovider/person/5parseId(uri):用于从路径中获取ID部分Uri uri = Uri.parse("content://com.test.provider.personprovider/person/5")long personid = ContentUris.parseId(uri);//获取的结果为:5
确定ContentProvider匹配的Uri:UriMatcher
void addURI(authority, path , code):添加需要匹配的uriint match(uri): 如果匹配就会返回匹配码
- 监听ContentProvider的数据变化
自定义类继承ContentObserver类,重写onChange方法,也就是当CP数据改变后的回调方法
通过ContentResolver向Uri注册ContentObserverregisterContentObserver(uri,notifyForDescendents, observer)
Uri:该监听器所监听的CP的UrinotifyForDescendents:是否监听子Uri数据改变observer:监听器实例
0 0
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentprovider
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- ContentProvider
- contentprovider
- contentprovider
- ContentProvider
- ContentProvider
- JavaScript面向对象(二):继承
- domino java多线程运用
- linux sort,uniq,cut,wc命令详解
- .NET批量大数据插入性能分析及比较(6.使用表值参数)
- An Introduction to UE4 Plugins
- ContentProvider
- 原windows下安装redis
- 广西应急减灾救灾系统个人理解
- eclipse 中的maven 不能自动关联下载代码的解决方案
- LeetCode 100: Same Tree
- File Input and Output with R
- 致员工:失败?被淘汰?并不是能力不行,而是……
- ubb js
- Multi-Threading: How to Create Threads in UE4