内容解析器的使用

2024-03-23

我是 android 领域的新手,正处于学习阶段。我有几个疑问:

每个应用程序是否有单个 ContentResolver 对象? 它是一个单例对象吗? 谁管理这个对象的生命周期? 如果是单例,它如何处理查询ContentProvider的多个请求?


来自亚历克斯·洛克伍德的博客 -http://www.androiddesignpatterns.com/2012/06/content-resolvers-and-content-providers.html http://www.androiddesignpatterns.com/2012/06/content-resolvers-and-content-providers.html

什么是内容解析器?

内容解析器是您的单个全局实例 提供对您的(和其他应用程序)的访问的应用程序 内容提供商。内容解析器的行为正如其名称一样 意味着:它接受来自客户端的请求,并解决这些请求 将他们引导至具有明确权限的内容提供商。 为此,内容解析器存储从权限到 内容提供商。这种设计很重要,因为它允许简单且 访问其他应用程序的内容提供商的安全方法。

内容解析器包括 CRUD(创建、读取、更新、删除) 与抽象方法相对应的方法(插入、删除、查询、 更新)在内容提供者类中。内容解析器不 了解正在交互的内容提供商的实现 与(也不需要知道);每个方法都会传递一个 URI 指定要与之交互的内容提供者。

什么是内容提供商?

而内容解析器提供了对 应用程序的内容提供商,内容提供商提供了一个 从底层数据源(即 SQLite 数据库)抽象。 它们提供了定义数据安全的机制(即通过强制执行 读/写权限)并提供连接的标准接口 一个进程中的数据,而另一进程中运行的代码。

内容提供者提供发布和消费的接口 数据,基于使用 content:// 的简单 URI 寻址模型 架构。它们使您能够将应用程序层与 底层数据层,使您的应用程序与数据源无关 通过抽象底层数据源。

查询的生命周期

那么简单查询背后的分步过程到底是什么呢?作为 如上所述,当您通过以下方式从数据库查询数据时 内容提供商,您不直接与提供商通信。 相反,您使用内容解析器对象来与 提供者。查询时发生的特定事件顺序 制作如下:

  • 致电getContentResolver().query(Uri, String, String, String, String)被制成。该调用调用内容解析器的查询
    方法,而不是ContentProvider's.

  • 当。。。的时候query方法被调用,内容解析器解析uri论证并提取其权威。

  • 内容解析器将请求定向到向(唯一)机构注册的内容提供商。这是通过调用来完成的
    内容提供商的query method.

  • 当。。。的时候Content Provider's query调用方法,执行查询并返回 Cursor(或引发异常)。这
    由此产生的行为完全取决于内容提供商的
    执行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内容解析器的使用 的相关文章

  • Android中使用Content Provider批量删除项目

    我正在尝试批量删除表中的某些项目 String ids 1 2 3 mContentResolver delete uri MyTables ID ids 但是我不断收到以下错误 java lang IllegalArgumentExcep
  • 用contentResolver删除短信太慢

    我想删除手机上的所有短信 除了每次对话的最后 500 条短信 这是我的代码 但速度非常慢 删除一条短信大约需要 10 秒 我如何加速这段代码 ContentResolver cr getContentResolver Uri uriConv
  • 禁用窗口和过渡设置

    所以我需要做的是在代码中打开和关闭窗口和 或过渡动画 以达到与 设置 gt 显示 gt 动画 gt 禁用所有动画 相同的效果 我熟悉的更改设备设置的方法是在 Settings System putInt 方法中使用 ContentResol
  • Android CalendarContract,删除重复事件会导致所有事件在日历上消失?

    我有一个同步适配器 可以处理同步日历和事件 我可以很好地删除正常事件 但每当我删除重复事件时 日历上的所有事件都会消失 我注意到的一件事是 每当我删除重复事件时 Instances表被清空 这解释了事件消失 这Events表符合预期 重复事
  • 如何一次选择多个联系人?

    我使用以下代码将电话簿联系人检索到我的应用程序 public void onCreate Bundle savedInstanceState super onCreate savedInstanceState setContentView
  • 使用 MediaStore 在 Android Q 中创建/复制文件

    我正在尝试找到一种方法 可以处理除媒体文件 图片 视频 音频 之外的任何文件的创建和复制 以便从 Android Q 内部存储中的一个位置复制到另一个位置 在此 我在应用程序文件夹中创建了我的文件我希望将它们移动到下载文件夹或我可以在内部存
  • Android 日历特定事件删除

    我创建了一个应用程序 可以轻松地将我想要的值放入设备的日历中 但是当我想以编程方式从日历中删除它时 我找不到方法 我在网上搜索过 主要是其他 stackoverflow 问题 以找到答案 此处链接 删除日历条目 日历中的事件未删除 删除特定
  • 如何解决多个内容提供商的问题?

    我创建了两个内容提供程序 它们在同一 SQLite 数据库的两个不同表上工作 他们共享一个实例SQLiteOpenHelper as Ali Serghini 的帖子中描述 http devserghini blogspot de 2010
  • Android:覆盖 API 29 中现有 URI 的文件

    以下代码采用String并将内容保存到现有文件中Uri 这些代码在 Android API 29 之前运行良好 public void saveFile String text Uri existingSourceUri try Conte
  • 如何在android中以编程方式删除联系人

    我尝试使用以下代码来删除与指定号码的联系 private void removeContact Context context String phone context getContentResolver delete Contacts
  • Android删除SIM卡联系人的方法

    下面是我从手机中删除联系人的代码 Uri contactUri Uri withAppendedPath PhoneLookup CONTENT FILTER URI Uri encode phone Cursor cur mContext
  • 如何使用位图将图像分享到社交媒体?

    我需要从 RecyclerAdapter 共享图像 因为该图像最初并不存在 即使用适配器在 Activity 中加载 如何将位图分享到社交媒体 每次我在应用程序中单击共享时 都会显示 没有应用程序可以执行此操作 feedItemView s
  • 为什么 ContentResolver 看不到其他应用程序添加的文件?

    我将文件添加到Documents MyExcelsFolder通过使用ContentResolver insert然后还将新文件添加到Documents MyExcelsFolder另一个应用程序的文件夹 例如文件管理器 然后我尝试从以下位
  • 如何更新媒体商店中的流派?

    我正在尝试更新音频文件的流派标签 CODE final Uri genreUri MediaStore Audio Genres EXTERNAL CONTENT URI String currentGenreName MediaStore
  • CallLog.Calls 处的 RuntimeException

    如果我尝试查询 有时在某些设备上会出现 RuntimeExceptionCallLog Calls 我查询的是CallLog Calls with contentProvider接听最后一个电话 有人可以帮助我为什么有时会出现此错误吗 我认
  • Android:Firebase 中“无法解析符号‘addValueEventListener’”

    我尝试导入各种 Firebase 包来阻止此错误发生 但它仍然存在 我正在尝试做一些事情 firebase addValueEventListener new ValueEventListener 但我一直收到错误 Cannot Resol
  • android中contentprovider和contentResolver有什么区别

    有什么区别内容提供商 and 内容解析器 我不想为SQLite数据库 我正在开发一个媒体应用程序 我找到了一些解释here http www androiddesignpatterns com 2012 06 content resolve
  • 创建和使用 Android 的 ContentProvider

    当我调用 Android ContentProvider 时 出现以下异常 java lang RuntimeException 无法 开始活动 ComponentInfo de harm android couchone de harm
  • ContentResolver的notifyChange方法是否也通知详细的Uri?

    在应用数据期间我使用notifyChange与Uri 假设我通知content com package my items 我还有详细的Activity显示数据来自content com package my items 1 是否通知 一般
  • getContentResolver() 如何工作?

    我看了一个关于ContentProvider在互联网上演示如何定义和使用ContentProvider 我对使用名为的方法感到困惑getContentResolver 这个方法返回什么 My ContentProvider没有实例化 代码只

随机推荐

  • 用python求解非方矩阵:如何使用numpy.linalg.lstsq()?

    要求的行为 我想用 python 求解非方矩阵 该矩阵具有两个线性相关向量 当前状态 我尝试使用numpy linalg solve 首先 但这仅适用于方阵 其他推荐使用的 StackOverflow 帖子numpy linalg lsts
  • 如何在iOS应用程序中切换皮肤(或设计主题)?

    我想让我的 iPhone 应用程序能够在皮肤 或设计主题 或外观和感觉 如木质 金属 大地色 男士 女孩等 之间切换 我将准备一些皮肤组 其中包含按钮和背景的图像 声音和文本颜色 并让用户通过应用程序设置决定他们想要使用哪组皮肤 实现这一点
  • Azure 广告组成员身份声明

    我已将 Azure AD 中应用程序清单中的 groupMembershipClaims 属性设置为 全部 这应该会导致在 id 令牌中返回用户的安全组成员身份 但是 它们不会被归还 已多次尝试重新登录 我做错了什么吗 您能否更具体地说明您
  • AppBarLayout 的嵌套 RecyclerView 问题

    我的 Activity 包含设计库 23 0 1 提供的 AppBarLayout 当我向上滚动时它会隐藏 我有一个 RecyclerView 每个子项也包含一个 RecyclerView 基本上是一个嵌套的 RecyclerView 我的
  • 如何使用 f"" 字符串而不是 .format() 打印二进制数?

    为了将一些数字打印为其二进制格式 我们只需使用 format 方法 像这样 Binary for i in range 5 1 print 0 gt 2 in binary is 0 gt 08b format i Output 0 in
  • 使用 hibernate-search 的自定义桥时出错

    我有两个实体 Indexed Entity Table name LK CONTACT TYPE public class ContactTypeEntity Id Column name ID DocumentId Integer id
  • 如何在 Windows 7 上卸载 Netbeans 6.9?

    我尝试卸载 Netbeans IDE 由于某种原因它拒绝卸载 当我从控制面板运行卸载程序时 我收到一条消息 安装程序锁定文件位于 c users user nbi nbilock 当我删除文件时 我收到一条消息 在注册表中找不到指定的目标组
  • 保持前 n 个元素按排序顺序的最佳数据结构是什么?

    我正在寻找一种保持顶部的数据结构n元素 类似于这个问题 https stackoverflow com questions 564112 data structure that always keeps n best elements 但增
  • 中值滤波器超高效实现

    我正在寻找快速 高效中值滤波器的 Ansi C 实现 有什么指点吗 到目前为止 我已经找到了下列的 http www eetindia co in STATIC PDF 200011 EEIOL 2000NOV03 EMS EDA TA p
  • 追加和插入都在那里有什么原因吗?

    我肯定不是我想成为的 Python 大师 我主要在业余时间学习 实验 很可能我会为有经验的用户提出一个小问题 但是 我真的很想去理解 这是一个对我帮助很大的地方 现在 在适当的前提之后 Python 文档说 4 6 3 可变序列类型 s a
  • nginx,上游,cors 失败

    无法理解为什么我的上游 CORS 配置失败 这阻碍了一些本地开发和测试 我得到了一个请求的资源上不存在 Access Control Allow Origin 标头当发出 API 请求时local mysite com 8081 to ev
  • 如何使用 ADO.NET 读取 .XLSX (Excel 2007) 文件?我发现“无法找到可安装的 ISAM”错误

    我需要工作于 net 2 0 所以我不能使用 OpenXML 这是我的源代码 我已经安装了AccessDatabaseEngine exe 但仍然遇到异常 找不到可安装的 ISAM 我也尝试过 Extended Properties Exc
  • 如何在编译时运行“npm install”等 bash 命令

    我需要跑npm install gulp build在我的里面static semantic ui文件夹 因此它创建了所需的css file 我看到这个例子Setup hs https github com nakaji dayo yeso
  • JMeter - 使用其他 BeanShell 预处理器/后处理器中的变量?

    有没有一种方法可以将变量从一个 BeanShell 预处理器 后处理器引用到另一个 BeanShell 处理器 它们在同一个线程组内 如果我在 HTTP 请求下的 BeanShell 预处理器内创建一个字符串变量 那么我可以在同一 HTTP
  • 使用 C#/Linq 将扁平化分层数据从 SQL Server 转换为结构化 JSON 对象

    我正在开发一个 MVC 应用程序 它从 SQL Server 中的表中检索数据 其结构如下 Id Name Hierarchy Depth 01 Justin 0 02 Chris 1 1 03 Beth 1 1 2 中的示例数据Hiera
  • ggplot 堆叠条形图每个月的前 5 名

    我有一个很好的 我已经思考这个问题很长时间了 我有这个数据集 这个数据集可能很大 我想根据每月前 5 个最高计数绘制 ggplot 堆栈条形图 例如 对于 1 1 2012 最高计数将为 I G F D 和 E df Date Desc c
  • 使用 ggplot 绘制具有多个预测变量的模型的一个预测变量

    这是线性模型和 ggplot 的典型示例 require ggplot2 utils data anorexia package MASS anorex 1 lt glm Postwt Prewt Treat offset Prewt fa
  • C++ 的属性和反射库?

    大多数成熟的 C 项目似乎都有自己的反射和属性系统 即用于定义可以通过字符串访问并自动序列化的属性 至少我参与的很多C 项目似乎都是这样的重新发明轮子 你知道任何好的开源库对于支持反射和属性容器的 C 具体来说 通过宏定义 RTTI 和属性
  • 包中涉及std::transform的Rcpp代码的兼容性

    我正在完成我一直在做的一个包 所有检查看起来都很好 并且在我的计算机上编译没有问题 win builder包裹也没有问题 作为进一步检查 我尝试在同事的计算机上从源代码安装 但失败了 问题来自于我从中获取的 Rcpp 函数Rcpp 中关于向
  • 内容解析器的使用

    我是 android 领域的新手 正处于学习阶段 我有几个疑问 每个应用程序是否有单个 ContentResolver 对象 它是一个单例对象吗 谁管理这个对象的生命周期 如果是单例 它如何处理查询ContentProvider的多个请求