Android Binder组合ContentProvider跨进程调用

在一些使用 Cursor 的场景里,如果想得到一个 Cursor 对象,但又没有数据库返回一个 Cursor,此时可以通过 MatrixCursor 来返回一个伪造的 Cursor。比如一个程序在一般情况下用 context.getContentResolver().query() 从 ContentProvider 中查询数据,但是在一些特殊的场景里,需要返回的只有几条固定的已知记录,不需要从数据库查询,此时可以使用 MatrixCursor 来根据这些已知的记录构造一个 Cursor。

MatrixCursor 的用法如下:

  1. 首先创建一个字符数组,字符数组的值对应着表的字段:

val COLUMN_NAME = arrayOf(“_id”, “name”, “age”)

  1. 利用MatrixCursor的构造方法,构造一个MatrixCursor,传入的参数即是步骤1中创建的字段数组:

matrixCursor = MatrixCursor(COLUMN_NAME)

  1. 通过matrixCursor的addRow方法添加一行值,相当于向数据库中插入一条记录:

matrixCursor?.addRow(arrayOf(1, “hearing”, 24))
// 也可以通过构造一个MatrixCursor.RowBuilder来实现
matrixCursor?.newRow()?.add(2)?.add(“hhh”)?.add(22)

通过上面三步即可完成 MatrixCursor 的构造,从 MatrixCursor 中取出数据的过程与 Cursor 相同。

接下来通过一个实例来看看怎么具体地借助 ContentProvider 和 Binder 来进行便捷的跨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值