ContentProvider跨进程共享数据
借用ContentResolver类访问ContentProvider中共享的数据。通过getContentResolver()方法获得该类的实例。
ContentResolver中的方法:insert()、updata()、delete()、query()
ContentResolver中增删改查方法传入的是Uri(权限、路径):content://com.examlple.app.provider/table1
获得Uri字符串之后,需要将其解析成Uri对象才能作为参数传入,调用Uri.parse()解析Uri字符。
查:
Uri uri = Uri.parse("content://com.example.app.table1")
Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor != null){
while(cursor.moveToNext()){
String column1 = cursor.getString(cursor.getColumnIndex("column1"));
Int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
}
cursor.close();
Uri uri = Uri.parse("content://com.example.app.table1")
Cursor cursor = getContentResolver().query(uri,projection,selection,selectionArgs,sortOrder);
if(cursor != null){
while(cursor.moveToNext()){
String column1 = cursor.getString(cursor.getColumnIndex("column1"));
Int column2 = cursor.getInt(cursor.getColumnIndex("column2"));
}
cursor.close();
}
增:
ContentValues values = new ContentValues();
values.put("column1","text");
values.put("column2",1);
getContentResolver().insert(uri,values);
改;
ContentValues values = new ContentValues();
values.put("column1","");
getContentResolver().updata(uri,values,"column1=? and column2 =?",new String[]{"text","1"});
删:
getContentResolver().delete(uri,"column2=?",new String[]{"1"});
自定义ContentProvider
重写6个抽象方法:onCreate()、query()、insert()、updata()、delete()、getType()
匹配Uri:借助UriMatches类中addURI(权限、路径、自定义代码)传递期望匹配的URI格式,然后调用match()方法进行匹配,从而判断出调用方期望访问的是哪张表中的数据。
getType()方法是每个ContentProvider都必须提供的一个方法,用于获取Uri对象所对应的MIME类型。
MIME类型条件:(1)必须以vnd开头
(2)如果是Uri路径结尾,则vnd.android.cursor.dir/vnd.com.example.app.provider.table1
(3)如果是id结尾,则vnd.android.cursor.item/vnd.com.example.app.provider.table2
ContentProvider跨进程共享数据的更多相关文章
- 基于xposed实现android注册系统服务,解决跨进程共享数据问题
昨花了点时间,参考github issues 总算实现了基于xposed的系统服务注入,本文目的是为了“解决应用之间hook后数据共享,任意app ServiceManager.getService就 ...
- Android学习--跨程序共享数据之内容提供其探究
什么是内容提供器? 跨程序共享数据之内容提供器,这是个什么功能?看到这个名称的时候最能给我们提供信息的应该是“跨程序”这个词了,是的重点就是这个词,这个内容提供器的作用主要是用于在不同的引用程序之间实 ...
- 0-Android使用Ashmem机制进行跨进程共享内存
Android使用Ashmem机制进行跨进程共享内存 来源: http://blog.csdn.net/luoshengyang/article/details/6651971 导语: 在Androi ...
- 基于Ceph分布式集群实现docker跨主机共享数据卷
上篇文章介绍了如何使用docker部署Ceph分布式存储集群,本篇在此基础之上,介绍如何基于Ceph分布式存储集群实现docker跨主机共享数据卷. 1.环境准备 在原来的环境基础之上,新增一台cen ...
- 内容提供者(Content Provider)——跨程序共享数据
内容提供者 Content Provider 应用的数据库是不允许其他应用访问的 内容提供者的作用就是让别的应用访问到你的数据库 自定义内容提供者,继承ContentProvider类,重写增删改查方 ...
- python开发进程:共享数据&进程池
一,共享数据 展望未来,基于消息传递的并发编程是大势所趋 即便是使用线程,推荐做法也是将程序设计为大量独立的线程集合 通过消息队列交换数据.这样极大地减少了对使用锁定和其他同步手段的需求, 还可以扩展 ...
- node中的cluster模块开启进程,进程共享数据
说明:共享数据 var collection = [41, 41, 41, 41] master.js console.log('###---start---###') var cluster = r ...
- windows:跨进程读数据
外挂.木马.病毒等可能需要读取其他进程的数据,windows提供了OpenProcess.ReadProcessMemory等函数.但越是大型的软件,防护做的越好,大概率会做驱动保护,比如hook S ...
- 使用WM_COPYDATA跨进程发送数据
进程之间通讯的几种方法: 在Windows程序中,各个进程之间常常需要交换数据,进行数据通讯.常用的方法有 使用内存映射文件 通过共享内存DLL共享内存 使用SendMessage向另一进程发送WM_ ...
随机推荐
- web前端开发学习路径图
第一阶段 WEB前端工程师课程 HTML语句,HTML页面结构.css语法.style属性.link和style标签.id属性.等HTML语句中的相关属性: 通过Dreamweaver制作出跨越平台限 ...
- myeclipse,eclipse控制台输出乱码问题
首先我描述一下问题,我在做udp socket编程(一个聊天的程序)的时候,从控制台中读取中文,然后再向控制台中打印,出现中文乱码的情况. 1.出现乱码最根本的原因就是编码和解码不一致的情况.问题分析 ...
- java8 学习系列--NIO学习笔记
近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ...
- C#正则表达式判断输入日期格式是否正确
/// <summary> /// 是否为日期型字符串 /// </summary> /// <param name=&qu ...
- 用SQL命令查看Mysql数据库大小
要想知道每个数据库的大小的话,步骤如下: 1.进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2.查询所有数据的大小: s ...
- NET基础(3):is 和 as 操作符
在C#语言中进行类型转换的另外一种方式是使用is和as操作符.is检查对象是否兼容于指定类型,返回Boolean值true或false.注意,is操作符永远不抛出异常,例如以下代码: Object o ...
- RabbitMq中的交换机
Rabbitmq的核心概念(如下图所示):有虚拟主机.交换机.队列.绑定: 交换机可以理解成具有路由表的路由程序,仅此而已.每个消息都有一个称为路由键 ...
- 一些CSS
/*自定义*白烟*文本/边框/背景色*/ .text-whitesmoke,a.text-whitesmoke:link,a.text-whitesmoke:visited,.button.borde ...
- Javascript模块化编程(一):模块的写法(转)
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂. 网页越来越像桌面程序,需要一个团队分工协作.进度管理.单元测试等等......开发者 ...
- 安装hive+mysql
1.源码安装mysql 以root用户首先安装libaio-0.3.104.tar.gz tar zxvf libaio-0.3.104.tar.gz cd libaio-0.3.104 make p ...