- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想知道是否可以在同一操作中使用 android.content.ContentResolver.applyBatch() 方法将主记录和详细记录保存到内容提供者,其中提供者参数中的后续 ContentProviderOperation 项取决于先前项的结果。
我遇到的问题是,在调用 ContentProviderOperation.newInsert(Uri) 方法并且 Uri 是不可变的时,实际的 Uri 是未知的。
我想出的如下所示:
主 Uri:content://com.foobar.masterdetail/master
详细 Uri:content://com.foobar.masterdetail/master/#/detail
ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
operations.add(ContentProviderOperation.newInsert(intent.getData())
.withValue(Master.NAME, "")
.withValue(Master.VALUE, "")
.build());
operations.add(ContentProviderOperation.newInsert(intent.getData()
.buildUpon()
.appendPath("#") /* ACTUAL VALUE NOT KNOWN UNTIL MASTER ROW IS SAVED */
.appendPath("detail")
.build())
.withValue(Detail.MASTER_ID, /* WHAT GOES HERE? */)
.withValue(Detail.NAME, "")
.withValue(Detail.VALUE, "")
.build());
ContentProviderResult[] results = this.getContentResolver().applyBatch(MasterDetail.AUTHORITY, operations);
for (ContentProviderResult result : results) {
Uri test = result.uri;
}
在我的内容提供程序中,我重写了 applyBatch() 方法,以便将操作包装在事务中。
这是可能的还是有更好的方法来做到这一点?
谢谢。
最佳答案
从操作数组中的项目产生的每个结果都由它在数组中的索引标识。后续操作可以通过 withValueBackReference() 方法引用这些结果。
.withValue(Detail.MASTER_ID, /* WHAT GOES HERE? */)
变成
.withValueBackReference(Detail.MASTER_ID, 0)
此用法的完整示例可在 sample ContactManager 中找到。 .0 是获取值的 ContentProviderOperation 的索引。
关于android - 使用 ContentResolver.applyBatch() 的主详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3224857/
我构建了一个需要将 2000 个联系人导出到 native Android 联系人的应用程序。我使用 contentresolver.applyBatch 来实现这一点,但如果用户注销,我想删除所有应
我有一项 Activity 通过在 ContentResolver 上执行 applyBatch() 命令在 Android 设备上插入大量联系人。我在许多 Android 设备上运行这个应用程序,它
我正在开发一个需要插入大量联系人条目的应用程序。目前大约有 600 个联系人,总共有 6000 个电话号码。最大的联系人有 1800 个电话号码。 截至今天的状态是我创建了一个自定义帐户来保存联系人,
我正在尝试用所有可用字段中的数据保存联系人。但由于某种原因,并非所有数据都得到保存。只有似乎有效的字段是: 结构化名称 电话 我是 组织机构 谁能告诉我我的错误在哪里? public void sav
我想知道是否可以在同一操作中使用 android.content.ContentResolver.applyBatch() 方法将主记录和详细记录保存到内容提供者,其中提供者参数中的后续 Conten
现在对于我的应用程序,当我想为我的 ContentProvider 更改数据时,我只使用 ContentResolver 的插入、更新和删除方法。但是在 Android SDK 中的几个示例项目中,我
我已经实现了一个将数据写入 Android 联系人提供程序的 SyncAdapter。大多数情况下,这似乎工作正常,除了我的一小部分用户,每次 SyncAdapter 触发时他们都会看到应用程序崩溃!
我是一名优秀的程序员,十分优秀!