java - Cursor 是否有独立的数据,或者它只是一个指向数据的指针?

标签 java android gmail cursor duplicates

我得到了 Gmail 客户端中的所有电子邮件:

final Cursor messages = getContentResolver().query(
          Uri.parse("content://gmail-ls/conversations/" + mailAddress + "/"
                     + String.valueOf(conversationId) + "/messages"), null, null, null,
                     null);

有一个问题...有时,当 Gmail 客户端尝试查看是否有新电子邮件到达时,同时我正在读取上面的光标,Gmail 崩溃并显示“IndexOutOfBoundException”。这种情况发生了超过一百次......在 1% 的时间里,更多。

第一个问题:我将尝试将消息 Cursor 复制到一个名为 copyCursur 的新 Cursor 中。

我不知道这个解决方案是否正确:例如,当我调用

messages.moveToLast();
  • A.它是否直接从“content://gmail-ls/conversations/”读取

  • B.或者 messages 是“content://gmail-ls/conversations/”中包含的数据的 COPY 本身?

因为如果 A,也许我的解决方案会获胜。否则如果B,我的解肯定是错的。

第二个问题:如何复制一个Cursor? 对吗,如果我这样做:

Cursor copyMessages = new Cursor();
copyMessages = messages;

或者以这种方式我只有 copyMessages 是消息的“指针”?

非常感谢!

最佳答案

这是一个指针。 如果您想遍历缓存数据,请使用 ContentQueryMap 类。

关于java - Cursor 是否有独立的数据,或者它只是一个指向数据的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5562369/

相关文章:

java - 为泛型类的泛型方法的属性赋值 - Java

android - NestedScrollView 和 CoordinatorLayout。滚动问题

c - 如何用c语言实现gmail的Oauth2.0

java - HashMap 通过 2 种不同的方法进行操作 - 多线程和并发

java - 使用 Google API 获取多个位置之间的最佳路径

java - throw 语句是什么?

android - android 选择器的自定义项目状态

android - 使用Notification.Builder更新通知上下文文本

Python - imaplib - 查看发送给特定发件人的消息

html - Gmail:大于内联 css 样式中定义的大小的元素