安卓学习笔记之Content provider

安卓四大组件之 content provider


用途

  • 跨程序共享数据(为其他应用程序提供访问数据的接口)

  • 利用Content Provider对数据进行封装,有利于脱离对数据库的依赖性(解耦)。改变底层数据库,而上层数据查询不用改变。


什么是Content Provider?

使用安卓存储有五种方式,分别是

  1. 文件
  2. 网络存储
  3. 数据库
  4. content provider
  5. sharedpreference

其中content provider 是安卓四大组件之一,按照英文翻译理解为,内容提供者。顾名思义,就是让内容提供给别的应用程序 ,即跨应用提供数据的统一接口。

直接上英文,权威一点。
Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process.

官方是这么解释的,翻译过来就是,Content provider管理android以结构化方式存放的数据。他以相对安全的方式封装数据并且提供简易的处理机制。Content provider提供不同进程间数据交互的标准化接口。


既然是对数据进行操作,所以增删查改必不可少的。
下面我们演示一个简单的demo
首先是创建一个ContentPro类继承自content provider类

public class ContentPro extends ContentProvider {
    @Override
    public boolean onCreate() {
        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {
        return null;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        return null;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }
}

继承了类之后要对应的要实现8个方法。分别是
继承的方法

也就是代码中提到的方法。
然后使用它之前和其它组件一样,必须在Manifest清单文件里面进行声明。

<provider
    android:authorities="com.example.does.myapplication.ContentPro"
    android:name=".ContentPro">
</provider>

其中authorities这个属性我们可以这样理解为它的身份证。为了保证统一性,我们命名的方式是使用包名。


使用到的类

  1. Content Resolver
    解析器,用来访问content provider类

  2. Content Provider
    内容提供者,用来给其它程序提供数据,主要提供对外访问的接口

  3. Uri
    用来区分应用程序,字段的url,分为三部分

  4. Uri.Builder
    用来连缀构建标准Uri的类

  5. ContentUris
    用来给Uri追加id和读取Uri中的id的帮助类

  6. UriMatcher
    Content Provider用来处理(匹配)不同Uri的类,创建Content Provider的时候就依靠UriMatcher进行匹配从而确定对不同的Uri请求进行不同的操作,有以下两个

  7. Uri的MIME类型


如何使用?

数据都是uri的形式向外公开的。

我作为新手,水平有限,就简单介绍一下,content provider规定数据形式的uri组成。

有三个部分,分别是

  • scheme
    这是google规定的,scheme是 content://

  • 主机名(Authorities)
    这个就是我们在清单文件里面声明的,相当于身份证,比如这里的

    com.example.does.myapplication.ContentPro,外部调用可以根据这个标识来找到它。

  • path
    路径(Path)可以用来表示我们要操作的数据,路径的构建根据业务而定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值