Есть ли у Cursor автономные данные или это только указатель на данные?

1

Я получаю все письма, присутствующие в клиенте 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 очень много!

  • 0
    Можете ли вы просто поймать исключение «IndexOutOfBoundException».
Теги:
duplicates
gmail
cursor

1 ответ

1
Лучший ответ

Это указатель. Если вы хотите перебирать кешированные данные, используйте класс ContentQueryMap.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню