[Android实习面试]复习准备6——四大组件(4) ContentProvider(Kotlin)

本文介绍了Android中ContentProvider用于程序间数据共享的核心组件,包括ContentProvider、ContentResolver和ContentObserver的工作原理,以及如何使用Uri进行查询、插入、更新和删除数据的操作。后续将涉及自定义ContentProvider的内容。
摘要由CSDN通过智能技术生成

使用原因

        Android官方推荐使用ContentProvider技术来将程序中的数据共享给其他程序(实际使用较少,主要是面试学习)


组成部分

  • 内容提供者:ContentProvider

        提供数据,并重写其中的增删改查方法,提供所需数据。

  • 内容接收者:ContentResolver

        处理数据,可以调用类似数据库的增删改查方法,实现数据获取。

  • 内容观察者:ContentObserver

        观察ContentProvider数据变化,并通知ContentResolver。

(图片来源:41.0-ContentProvider理论知识_哔哩哔哩_bilibili


ContentResolver的基本用法

1. Uri对象

        Uri对象类似于SQL中的操作对象的表名,有了Uri对象就可以实现类似SQL的增删改查操作了。

2. 查询query

val cursor = contentResolver.query(
    uri,
    projection,
    selection,
    selectionArgs,
    sortOrder)

        上述的参数与SQL的对应关系如下表所示。(表来源:《第一行代码》郭霖)

        然后就可以通过下述代码来获取数据:

while (cursor.moveToNext()) {
    val column1 = cursor.getString(cursor.getColumnIndex("column1"))
    val column2 = cursor.getInt(cursor.getColumnIndex("column2"))
}
cursor.close()

3. 增加insert

val values = contentValuesOf("column1" to "text", "column2" to 1)
contentResolver.insert(uri, values)

4. 修改update

val values = contentValuesOf("column1" to "")
contentResolver.update(uri, values, "column1 = ? and column2 = ?", arrayOf("text", "1"))

5. 删除delete

contentResolver.delete(uri, "column2 = ?", arrayOf("1"))

TODO:学习的内容较少,更多更难的部分(如自定义ContentProvider)还没有学习,考虑后续更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值