withValueBackReference 的语义是什么?
我无法弄清楚 withValueBackReference。
我已经使用此方法阅读了示例代码(例如添加新联系人的代码),提供了 backReference 值 0。这是什么意思?
文档说:
反向引用中的列值优先于 withValues(ContentValues) 中指定的值
I cannot figure out the exact semantics of withValueBackReference.
I've read the example code (for example the code which adds a new contact) using this method, providing a backReference value of 0. What does this mean?
The documentation says:
A column value from the back references takes precedence over a value specified in withValues(ContentValues)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
该问题涉及内容提供商的批量操作。该示例是根据此相关问题修改的。
创建一批操作时,首先创建要执行的操作列表:
然后使用 applyBatch 方法将它们应用到内容提供程序。
这是基本概念,所以让我们应用它。假设我们有一个内容提供程序,它处理 Foo 记录和一些名为 Bar 的子记录的 uri。
现在我们只插入 2 个新的 Foo 记录,分别称为“Foo A”和“Foo B”,下面是示例。
这里没什么特别的,我们将 2 个 ContentProviderOperation 项添加到我们的列表中,然后将该列表应用到我们的内容提供程序。结果数组填充了我们刚刚插入的新记录的 id。
假设我们想做类似的事情,但我们还想通过批量操作将一些子记录添加到我们的内容提供程序中。我们想要将子记录附加到我们刚刚创建的 Foo 记录。问题是我们不知道父 Foo 记录的 id,因为批处理尚未运行。这就是 withValueBackReference 帮助我们的地方。让我们看一个例子:
所以 withValueBackReference() 方法允许我们在知道要关联的父记录的 id 之前插入相关记录。后向引用索引只是返回我们想要查找的 id 的操作的索引。从您期望哪个结果包含 id 的角度来考虑可能更容易。例如
results[1]
将包含“Foo B”的 id,因此我们用来反向引用“Foo B”的索引是 1。This question relates to batch operation on a content provider. The example is modified from this related question.
When creating a batch of operations first create a list of operations to perform using:
then apply them to the content provider using the applyBatch method.
That is the basic concept so let's apply it. Suppose we have a content provider which handles uris for Foo records and some child records called Bar.
For now we'll just insert 2 new Foo recordscalled "Foo A" and "Foo B", here's the example.
Nothing special here, we are adding 2 ContentProviderOperation items to our list and then applying the list to our content provider. The results array filled with the id's of the new records that we have just inserted.
So say we wanted to do something similar but we also want to add some child records into our content provider in one batch operation. We want to attach the child records to the Foo records we just created. The problem is we don't know the id of the parent Foo records because the batch has not been run. This is where the withValueBackReference helps us. Let's see an example:
So the withValueBackReference() method allows us to insert the related records before we know the id of the parent we want to relate them to. The back reference index is simply the index of the operation that will return the id we want to look for. It is perhaps easier to think of it in terms of which result you would expect to contain the id. e.g
results[1]
would contain the id for "Foo B" so the index we use to back reference to "Foo B" is 1.