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()监听消息
对于使用内容提供者,可能因为没有具体的代码实例,会感到陌生,其实没关系的,如果要用的时候,我们随随便便网上看一眼就知道了,不要慌,哈哈
本文转自诡道网!由杨小杰blog进行排版整合。
发表评论: