前言
在Android
开发过程中,我们知道有四大组件:Activity
,Service
,BroadCast
以及ContentProvider
。
Activity
方面的知识我曾经也多少讲解过一些,比较零散。关于它的知识主要是围绕生命周期
和启动模式
展开。关于Activity
的生命周期
我没有系统讲过,不过与之相关的Fragment
的生命周期我倒是讲过,大家感兴趣的话,可参考DialogFragment(一)——简介来对比Activity
的生命周期
学习。
关于Activity
的启动模式
大家可以参考以下文章:
Kotlin笔记(41) — Activity启动模式
Service
学习的话,大家可参考:
一.Service简介
二. "非绑定式服务"知识全解
三.快速创建"非绑定式"服务
四."绑定式"服务知识全解
五.快速创建"绑定式"服务
六.AIDL实现跨进程通讯
七.IntentService使用讲解
BroadCast
学习,大家可参考:
一.BroadCast全解析
二.封装一个广播工具类 —— AppReceiver
三.本地广播 — LocalBroadcastManager
四. 网络实时监测广播
五.App开机自启动的实现
六.App强迫下线的实现
ok,今天就和大家来学习下内容提供器ContentProvider
的相关知识吧。
今天涉及到的知识:
- ContentProvider内容提供器包括哪些内容
- ContentProvider使用
- 最后要说的话
一.ContentProvider内容提供器包括哪些内容
我们一直说的ContentProvider是四大组件之一
,其实这里的ContentProvider
远不止ContentProvider
而已。它其实包括以下知识:
- ContentProvider :app内部数据提供器,用以实现不同应用间数据共享。
- ContentResolver:内容解析器,主要用于查询,获取手机内部联系人,短信等数据。
- ContentObserver:内容观察器,一般用于监听短信动作,如接收短信,发送短信等。
二. ContentProvider使用
ContentProvider
主要用于不同应用间跨进程数据访问。但是ContentProvider
自身并不具备数据存储功能,它只提供数据操作(增删改查)的统一接口。这些接口的执行,需要一个具体的数据库对象(Android
上一般为Sqlite
数据库对象)来协助完成各种数据库操作。
说起来比较枯燥,下面举例说明。
假如我们在一部手机上有两个应用:A
和B
。要实现应用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, 今天的内容就介绍到这里了,谢谢大家。
网友评论