ContentProvider以某种Uri的形式对外提供数据,而其它应用使用ContentResolver依据Uri去訪问操作指定数据。...注冊ContentProvider仅仅须要在 Uri概述 Uri还是非常easy理解的,我们能够和互联网的URL进行类比。...仅仅须要知道ContentProvider的Uri就可以。...所共享的数据发生了改变,这行代码能够通知全部注冊在改Uri上的监听者,为了在应用程序中监听ContentProvider数据的改变。...在使用的时候须要通过ContentProvider向指定的Uri注冊ContentObserver监听器。
- - - - - - - - - - - - - - - - - - - - - */ } } 构建URiMatcher 为多行和单行数据定义final整型常量 为完整的UriMatcher...声明静态全局变量 定义一个将URI与整型匹配项关联的buildUriMatcher方法 // Verify that TaskContentProvider extends from ContentProvider...and implements required methods public class TaskContentProvider extends ContentProvider { // COMPLETED...uri (this points to the newly inserted row of data) return returnUri; } query 以下是查询一个任务的代码...// Return the number of tasks deleted return tasksDeleted; } getType 以下是 ToDo list 应用的
ContentProvider 内容提供者,应用程序间的数据交互,是为存储和获取数据提供的统一接口。...Contentprovider为应用间数据交互提供了安全的环境,它允许把自己的应用数据开放给其他应用进行 CRUD。怎么样进行操作可以自己规定,不用担心权限的问题。...关于uri 参考这篇文章:http://blog.csdn.net/dlutbrucezhang/article/details/8917303 创建一个ContentProvider 创建自己的内容提供程序...到这里 一个简单的内容提供者就创建完成了 ---- ContentResolver 可以看做是客户端 与ContentProvider 对应 ,ContentProvider 负责提供数据操作接口 ,ContentResolver...可以调用ContentProvider的数据接口对数据进行操作 为了测试上面定义的ContentProvider ,另创建一个Module 进行读取 private void read() {
的时候就被废除了,那么现在要在不同的Android程序之间共享数据的话就只能通过ContentProvider(内容提供器)来实现了(排除你是黑客的前提下)。...首先,如果要访问一个应用程序通过ContentProvider共享的数据,一定要借助ContentResolver类,我们可以通过Context类的getContentResolver()方法获取ContentResolver...和数据库操作不同的是,ContentResolver类的这些操作都不是通过数据库表名进行的,而是通过传入ContentProvider共享数据的Uri(统一资源标识符,通过它可以找到任何文件所处的位置)...selectionArgs) 第一个参数要删除的数据所在数据表的Uri,第二个参数是删除的条件,可以存在占位符,第三个参数是补全第二个参数的占位符 更改数据:update(Uri uri, ContentValues...,第三第四个参数是要查询的数据满足的条件, 第五个参数是查询结果的排序方式 下面通过一个小例子来理解: 通过ContentProvider来读取联系人信息并且建立自定义的ContentProvider
ContentProvider 简介 ContentProvider 作为 Android 四大组件中的一种,为我们提供了不同进程甚至是不同应用程序之间共享数据的机制。...ContentProvider 的生命周期默认在 Application onCreate() 之前,而且都是在主线程创建的,这和其他四大组件是不同的 ContentProvider 多进程模式,它可以和...(uri)发出消息 ContentResolver 内容解析者,用于获取内容提供者提供的数据 ContentObserver 内容监听器,可以监听数据的改变状态 ContentResolver.registerContentObserver...ContentProvider 创建源码分析 ContentProvider 启动会伴随进程的启动,在ActivityManagerService中,启动进程是由startProcessLocked方法来完成的...启动操作,遍历ProviderInfo列表通过installProvider进行启动操作,然后将已经启动的ContentProvider通过进程的方式发布到AMS中。
Data URI的利弊 由 Ghostzhang 发表于 2010-10-16 00:00 最近Data URI似乎热了起来,特别是从淘宝UED上发了一篇《Data URI小试 —— 在旺旺点灯(JS...说到Data URI的优点,自然少不了“减少链接数”,把图片转为Base64编码,以减少图片的链接数。我们先想当然一下,同样一张图片,如果不用发起一个下载请求,打开速度是会更快的。...但是,有几个问题需要关注下: 图片始终是要下载的,那么下载一张图片的速度快还是下载一堆编码快? 浏览器对图片的显示,处理效率哪个更快?...,可以发现,使用Data URI方式的Demo在渲染时会比不使用 多消耗53%左右的CPU资源,内存多出4倍左右,耗时平均高出24.6倍 。...有关Data URI的介绍可以看下《data URI scheme》和《利用 Data URL 加速你的網頁》,里面提到的IE8以下浏览器不支持的问题,相应的解决方案可以看《MHTML – when you
引言 我们什么时候 会用到ContentProvider呢? 1.我们想在自己的应用中访问别的应用,或者说一些ContentProvider暴露给我们的一些数据, 比如手机联系人,短信等!...使用系统提供的ContentProvider 其实很多时候我们用到ContentProvider并不是自己暴露自己的数据,更多的时候通过 ContentResolver来读取其他应用的信息,最常用的莫过于读取系统...作为ContentProvider的部分就完成了!...的初探就到这里,我们学习了: ContentProvider的概念以及流程,使用系统提供的一些ContentProvider,以及定制自己的ContentProvider, 最后还讲解了通过ContentObserver...监听ContentProvider的数据变化,ContentProvider的内容就掌握得差不多 了.
自定义一个Content Provider类,来实现抽象类ContentProvider。...通过UriMatcher确定要操作的URI数据类型,ContentUris可用于操作Uri路径后面的ID部分,使用Uri.getQueryParameter可获取URI中的参数。...Uri 和 Uri.Builder 类包含根据字符串构建格式规范的 URI 对象的便利方法, ContentUris 包含一些对 ID 值操作的方法。...如果想要监听ContentProvider中的数据变化,可以使用ContentResolver的registerContentObserver注册一个监听器ContentObserver,其原理是在ContentResolver...URI的数据发生了变化。
登录信息(认证): 指定用户名和密码作为从服务器端获取资源时必要的登录信息,此项是可选的。 服务器地址: 使用绝对URI必须指定待访问的服务器地址。...服务器端口号: 指定服务器连接的网络端口号,此项是可选的。 路径: 指定服务器上的文件路径来定位特定资源。...格式为: /home/index.html 参数: 为应用程序提供访问资源所需的附加信息。...例如:ftp://127.27.27.27/pub/pic;type=d 查询字符串: 针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数,此项是可选的。...片段标识符: 通常可标记出以获取资源中的子资源(文档内的某一个位置),此项是可选的。
其中,URL,URN是URI的子集。 Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式: URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。 ...URI有绝对和相对之分,绝对的URI指以scheme(后面跟着冒号)开头的URI。...你可以把绝对的URI看作是以某种方式引用某种资源,而这种方式对标识符出现的环境没有依赖。如果使用文件系统作类比,绝 对的URI类似于从根目录开始的某个文件的径。 ...与绝对的URI不同的,相对的URI不是以scheme(后面跟着冒号)开始的URI。 它的一个例子是articles/articles.html。...你可以把相对的URI看作是以某种方式引用某种资源,而这种方式依赖于标识符出现的环境。 如果用文件系统作类比,相对的URI类似于从当前目录开始的文件路径。
Android-ContentProvider使用 一 建立ContentProviderserver端 1 建立一个继承自ContentProvider的类并重写接口方法(这里仅打一些log做代表...; /** * ContentProvider的server端类 * @author chengzhi * */ public class MyContentProvider extends ContentProvider...这样Cursor的生命周期和Activity便可以自己主动同步,防止当前的Activity退出后,cursor依旧存在导致内存泄露 2 当前Activity调用另外一个没有启动的进程的ContentProvider..., 将当前项目的manifest文件里的provider中的android:multiprocess=”true”即同意其它进程訪问 3 ContentProVider的机制 在程序安装和卸载的时候...当使用ContentResolver来传入Uri的时候 在Providermanager中在链表找到该Uri来匹配并启动不同的进程 因此进程不是通过Activity启动。
这里先给出源码分析的结论: Application的onAttachContext()先执行 Application 的 onCreate() 方法执行 ContentProvider 的 onCreate...─ ActivityThread.installContentProviders ├── ActivityThread.installProvider ├── ContentProvider.attachInfo...├── ContentProvider.attachInfo ├── ContentProvider.onCreate //...调用 ContentProvider的onCreate方法 ├── Instrumentation.callApplicationOnCreate ├── Application.onCreate...//调用Application的onCreate方法 结论: 调用顺序: Application 构造方法 –> Application.attachBaseContext –> ContentProvider.onCreate
FileProvider这些配置属性也就是ContentProvider的通用配置: android:name,是ContentProvider的类路径。...,而不是普通的ContentProvider访问方式,后面会说到。...也正是因为这个属性为true,在Android7.0以下,Android默认是将它当成一个普通的ContentProvider,外部无法通过content:// URI来访问文件。...可以通过Content URI对应的ContentProvider配置的getType来匹配Activity。...) 这样配置之后,startActivity就会检查Activity的mineType 和 Content URI 对应的ContentProvider的getType是否相同,相同情况下才能正常打开
2URL URL(统一资源标识符)代表要操作的数据,可以用来标识每个ContentProvider,这样你就可以通过指定的URI找到想要的ContentProvider,从中获取或修改数据。...B:主机名(Authority),是URI的授权部分,是唯一标识符,用来定位ContentProvider。...Android中的工作方式跟HTTP类似,ContentProvider会根据URI来返回MIME类型,ContentProvider会返回一个包含两部分的字符串。...4ContentResolver ContentResolver通过URI来查询ContentProvider中提供的数据。除了URI以 外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。...ContentResolver 类提供了与ContentProvider类相同签名的四个方法: public Uri insert(Uri uri, ContentValues values) //添加
需要提前了解下什么是URI,及URI和URL的区别: URI、 URL 和 URN 的区别 URI 引用包括最多三个部分:模式、模式特定部分和片段标识符。...在java中,URI使用java.net.URI类表示,URI类只能标识资源,和解析URI,而不能获取URI所标识的资源(URN是无法定位到资源的)。...主要针对层次的URI。通过 模式、服务器地址、文件路径、片段标识构造URI。 主要针对层次的URI。通过 模式、授权机构、文件路径、查询条件、片段标识构造URI。 主要针对层次的URI。...是否透明URL URI通常情况下都是层次(带“/”)的,但是也有不透明(没有“/”)的,层次的URI包含模式,主机,站点等各个部分,当然可能某些部分不包含,但是不透明的URI只包含三个部分,Scheme...如果URI是层次结构则能获取所有信息。 方法中带Raw的,是获取编码后的URI部分信息。非ascii的字符需要进行编码,不带Raw的方法是解码后的信息。
Android 中ContentProvider的实例详解 Content Provider 的简单介绍: * Android中的Content Provider 机制可支持在多个应用中存储和读取数据...在Android系统中,没有一个公共的内存区域,供多个应用共享存储数据; * Android 提供了一些主要数据类型的ContentProvider ,比如:音频、视频、图片和私人通讯录等; 在...android.provider 包下面找到一些android提供的ContentProvider;可以通过获得ContentProvider, 查询他们包含的数据(查询的条件是:已经获得适当的读取权限...); 1、Uri的介绍: Uri代表了要操作的数据,Uri主要包含了两部分的信息: * 需要操作的ContentProvider * 对ContentProvider 中的什么数据进行操作;...(内容提供者)的scheme 已经由Android所规定,scheme为 content://主机名(或叫Authority)用于唯一标识这个ContentProvider,外 部调用者可以根据这个标识来找到它
大家好,又见面了,我是你们的朋友全栈君。 我想使用具有对Activity的引用的动态注册BroadcastReceiver,以便它可以修改其UI。...我正在使用Context.registerReceiver()方法,但从未调用接收者的onReceive()方法。...这是显示问题的示例代码: package com.example; import android.app.Activity; import android.app.IntentService; import...如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
ContentProvider(以下简称CP)是Android的四大组件之一,提供类似数据库增删查改的数据操作方式,同时还支持跨进程。...在它的构造方法中,会实例化一个mContentResolver,用于getContentResolver()方法调用的时候返回,而这个方法是我们使用ContentProvider的时候,一定会用到的。...uri) { if (!...SCHEME_CONTENT.equals(uri.getScheme())) { return null; } final String auth = uri.getAuthority...六、总结 我们选择ContentProvider作为跨进程通信的方案时,要把Client进程被杀死的情况考虑在内,因为这看似不可完全避免。
android下一个应用程序产生的数据要供其他程序共享有以下方式: 1.文件以可读可写的方式放在SD卡或手机内 2.数据库文件放到SD卡中读写 但以上两种方式虽然也可以实现共享,但不同文件读写方法不一样..., 这content provider统一了各种存储方式的方法,屏蔽了操作细节,文件或数据库将其封装成contentProvider后,读写操作方法就统一了,不需要关心其存储的差异。...这里以数据库封装中contentProvider为例进行学习。当然普通文件也一样的,对输入文件流进行封装成contentProvider即可。...以下是A程序数据库的封装(数据库的实现见Sqlite的操作) package com.example.databaseService; import android.content.ContentProvider...; import android.util.Log; public class contactsProvider extends ContentProvider { private Dbservice
URI URI = Universal Resource Identifier 统一资源标志符 URI采用一种特定语法标识一个资源的字符串。所标识的资源可能是服务器上的一个文件。...通过URI找到资源是通过对名称进行标识,这个名称在某命名空间中,并不代表网络地址。 它包含URL和URN。...、URL和URN区别 URI 指的是一个资源 URL 用地址定位一个资源; URN 用名称定位一个资源。...举个例子: 去寻找一个具体的人(URI);如果用地址:XX省XX市XX区...XX单元XX室的主人 就是URL;如果用身份证号+名字去找就是URN(身份证号+名字 无法确认资源的地址) 。...在Java类库中,URI类不包含任何访问资源的方法,只能标识资源。URL类可以访问资源,可以获取指定资源的流信息。 URL格式 ? URL格式 1.
领取专属 10元无门槛券
手把手带您无忧上云