我得到了 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/