安卓四大组件之ContentProvider-内容提供者

1、ContentProvider是如何实现数据共享的?

在安卓中如果想将自己应用的数据(一般为自己数据库中的数据)提供给第三方的应用,那么我们只能通过内容提供者来实现。

ContentProvider是应用程序之间共享数据的接口,使用的时候首先自定义一个类继承ContentProvider,然后重写query\insert\update\delete等的方法。因为其实四大组件之一,因此必须在清单文件中配置(manifest).

把自己的数据通过URI的形式共享出去

安卓系统下不同程序 数据默认是不能共享访问的

需要去实现一个类去继承ContentProvider

public class PersonContentProvider extends ContentProvider{
 public boolean onCreate(){
 }
  query(Uri, String[], String, String[], String)
 insert(Uri, ContentValues)
 update(Uri, ContentValues, String, String[])
 delete(Uri, String, String[])
 }
<provider
android:exported="true"
android:name="com.itheima.contenProvider.provider.PersonContentPro
vider"android:authorities="com.itheima.person" />

第三方可以通过 ContentResolver 来访问该 Provider。

2、安卓中数据存储的方式

文件存储、sp存储、ContentProvider存储、SQLiteDataBase存储、网络存储

3、为什么要用ContentProvider?它和Sql的实现上有什么差别?

contentProvider屏蔽了数据存储的细节,用户只需要关心操作数据的URI就可以了,ContentProvider可以实现不同APP之间的共享。

Sql也有增删改查的方法,但是Sql只能查询本应用下的数据库。而ContentProvider还可以去增删改查本地文件。XML文件的读取等等。

4、说说ContentProvider、ContentResolver、ContentObserver之间的关系

a.ContentProvider内容提供者,用于对外提供数据

b.ContentResolver.notifyChange(uri)发出信息

c.ContentResolver内存解析者,用于获取内容提供者提供的数据

d.ContentObserver内容观察者,可以监听数据的改变状态

e.ContentResolver.registerContentObserver()监听消息

对于使用内容提供者,可能因为没有具体的代码实例,会感到陌生,其实没关系的,如果要用的时候,我们随随便便网上看一眼就知道了,不要慌,哈哈

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯Bugly的专栏

【译】使用 APK Analyzer 分析你的 APK

本文来自“天天P图攻城狮”公众号(ttpic_dev) 本文是对 《Analyze Your Build with APK Analyzer》 的翻译。 An...

43650
来自专栏牛肉圆粉不加葱

Spark Storage ② - BlockManager 的创建与注册

上一篇文章介绍了 Spark Storage 模块的整体架构,本文将着手介绍在 Storeage Master 和 Slave 上发挥重要作用的 BlockMa...

6810
来自专栏小筱月

java 开发 websocket 网页端聊天室

WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

58920
来自专栏用户画像

虚拟存储器

9310
来自专栏Android群英传

一个字符解决Gradle aar编译参数传递问题是怎样一种体验

8710
来自专栏游戏杂谈

versionCode溢出的问题

android应用的版本主要由versionCode和versionName来决定,android系统是根据versionCode来验证新的apk是否能安装。如...

20120
来自专栏三丰SanFeng

Linux进程间通信(一) - 管道

管道(pipe) 普通的Linux shell都允许重定向,而重定向使用的就是管道。 例如:ps | grep vsftpd .管道是单向的、先进先出的、无结构...

25970
来自专栏转载gongluck的CSDN博客

打开文件open()函数的使用方法详解

头文件:#include <sys/types.h>    #include <sys/stat.h>    #include <fcntl.h> 定义函数...

29950
来自专栏V站

PHP实现检测客户端是否使用代理服务器及其匿名级别

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。

395120
来自专栏PingCAP的专栏

TiKV 是如何存取数据的(上)

本文会详细的介绍 TiKV 是如何处理读写请求的,通过该文档,同学们会知道 TiKV 是如何将一个写请求包含的数据更改存储到系统,并且能读出对应的数据的。

42620

扫码关注云+社区

领取腾讯云代金券