一、定义
ContentProvider,即内容提供者,属于Android的四大组件之一
二、作用
进程间进行数据交互&共享,即跨进程通信(图片来源)
三、原理
ContentProvider的底层是采用Android中的Binder机制
四、具体使用
ContentResolve类
- 作用:
统一管理不同ContentProvider间的操作
1、通过URL即可操作不同的ContentProvider中的数据
2、外部进程通过ContentResolver类从而与ContentProvider类进行交互
- 为啥要使用通过ContentResolver类从而与ContentProvider类进行交互,而不直接访问ContentProvider类?
一般来说,一款应用要使用多个ContentProvider,若需要了解每个ContentProvider的不同实现从而再完成数据交互,操作成本高且难度大
在ContentProvider类上加多了一个ContentResolver类对所有的ContentProvider进行统一管理。
优点
1、安全
ContentProvider为应用间的数据交互提供了一个安全的环境,允许把自己的应用数据根据需求开放给其他应用进行增删改查,而不用担心因为直接开放数据库权限带来的安全问题。
2、访问简单且高效
相对于其他对外共享数据的方式,数据访问方式会因数据存储的方式而不同:
- 采用文件方法对外共享数据,需要进行文件操作读写数据;
- 采用SharedPreferences共享数据,需要使用sharedPreferences API读写数据,这使得访问数据变得复杂且难度大。
- 此阿勇ContentProvider方式,其解耦了底层数据的存储方式,使得无论底层数据存储采用何种方式,外界对数据的访问方式都是统一的,这使得访问简单且高效。