美文网首页
ContentProvider(1) — ContentProv

ContentProvider(1) — ContentProv

作者: 奔跑的佩恩 | 来源:发表于2021-03-05 08:25 被阅读0次

前言

Android开发过程中,我们知道有四大组件:Activity,ServiceBroadCast以及ContentProvider
Activity方面的知识我曾经也多少讲解过一些,比较零散。关于它的知识主要是围绕生命周期启动模式展开。关于Activity生命周期我没有系统讲过,不过与之相关的Fragment的生命周期我倒是讲过,大家感兴趣的话,可参考DialogFragment(一)——简介来对比Activity生命周期学习。
关于Activity启动模式大家可以参考以下文章:
Kotlin笔记(41) — Activity启动模式

Service学习的话,大家可参考:
一.Service简介
二. "非绑定式服务"知识全解
三.快速创建"非绑定式"服务
四."绑定式"服务知识全解
五.快速创建"绑定式"服务
六.AIDL实现跨进程通讯
七.IntentService使用讲解

BroadCast学习,大家可参考:
一.BroadCast全解析
二.封装一个广播工具类 —— AppReceiver
三.本地广播 — LocalBroadcastManager
四. 网络实时监测广播
五.App开机自启动的实现
六.App强迫下线的实现

ok,今天就和大家来学习下内容提供器ContentProvider的相关知识吧。
今天涉及到的知识:

  1. ContentProvider内容提供器包括哪些内容
  2. ContentProvider使用
  3. 最后要说的话

一.ContentProvider内容提供器包括哪些内容

我们一直说的ContentProvider是四大组件之一,其实这里的ContentProvider远不止ContentProvider而已。它其实包括以下知识:

  • ContentProvider :app内部数据提供器,用以实现不同应用间数据共享。
  • ContentResolver:内容解析器,主要用于查询,获取手机内部联系人,短信等数据。
  • ContentObserver:内容观察器,一般用于监听短信动作,如接收短信,发送短信等。

二. ContentProvider使用

ContentProvider主要用于不同应用间跨进程数据访问。但是ContentProvider自身并不具备数据存储功能,它只提供数据操作(增删改查)的统一接口。这些接口的执行,需要一个具体的数据库对象(Android上一般为Sqlite数据库对象)来协助完成各种数据库操作。
说起来比较枯燥,下面举例说明。
假如我们在一部手机上有两个应用:AB。要实现应用B可以访问应用A的数据的话,则在应用A中需要现有自己的数据库,假设此数据的操作数据库对象为SQLiteDatabase db,然后继承ContentProvider写一个自己的Provider,假设叫MyProvider,将db对象放到MyProvider中,利用db对象写一系列的增删改查方法。
然后在A应用的Androidmanifast.xml中注册MtProvider,类似下面这样:

<provider
            android:exported="true"
            android:authorities="xxxx"
            android:name=".provider.MyProvider"/>

接着在应用B中利用ContentResolver通过对应匹配的uri去调用对应的进程一的contentprovider的不同的表进行增删改查操作。
大致逻辑就是这样了。ContentProvider的使用已有大神做过详细讲解,这里贴下这篇文章:
ContentProvider的简单使用
在此,对该作者表示感谢。

三. 最后要说的话

ContentProvider的使用场景是跨进程数据共享。适用于两个不同应用需要数据共享的场景。但是在实际开发中,由于很多app已经十分重视自己数据的安全性,使得该功能的使用频率不是很高。大家了解就好。

ok, 今天的内容就介绍到这里了,谢谢大家。

相关文章

网友评论

      本文标题:ContentProvider(1) — ContentProv

      本文链接:https://www.haomeiwen.com/subject/cnlqqltx.html