Я получаю все письма, присутствующие в клиенте Gmail:
final Cursor messages = getContentResolver().query(
Uri.parse("content://gmail-ls/conversations/" + mailAddress + "/"
+ String.valueOf(conversationId) + "/messages"), null, null, null,
null);
Возникает проблема... Иногда, когда клиент Gmail пытается увидеть, появилось ли новое письмо, и я, m, читаю в то время, что указанный выше курсор, сбой Gmail с "IndexOutOfBoundException". Это случается раз в сто раз... в 1% случаев, более подробно.
Первый вопрос: Я попытаюсь дублировать сообщения курсора в новый курсор, называемый copyCursur.
Я не знаю, правильно ли это решение: например, когда я звоню
messages.moveToLast();
а. читает ли он непосредственно из "content://gmail-ls/conversations/"
. или сообщения - это КОПИРОВАНИЕ данных, определенных в "content://gmail-ls/conversations/"?
потому что если A, может быть, мое решение colud выиграет. В противном случае, если B, мое решение, безусловно, неверно.
Второй вопрос: как дублировать курсор? Правильно ли, если я это сделаю:
Cursor copyMessages = new Cursor();
copyMessages = messages;
или, таким образом, я только что copyMessages является "указателем" на сообщения?
Thanx очень много!
Это указатель. Если вы хотите перебирать кешированные данные, используйте класс ContentQueryMap.