Android SQL Lite не растет - PullRequest
       0

Android SQL Lite не растет

6 голосов
/ 30 декабря 2010

Мы создаем приложение, которое синхронизирует 5000 записей календаря с сервером. Проблема заключается в том, что после добавления 1913 записей происходит сбой и возникает следующая трассировка стека. В чем проблема?

12-30 11:48:16.989: DEBUG/dalvikvm(384): GC_EXPLICIT freed 5699 objects / 345848 bytes in 579ms
12-30 11:48:22.530: DEBUG/dalvikvm(232): GC_EXPLICIT freed 2552 objects / 124160 bytes in 311ms
12-30 11:48:24.560: ERROR/CursorWindow(232): need to grow: mSize = 1048576, size = 414, freeSpace() = 328, numRows = 1913
12-30 11:48:24.599: ERROR/CursorWindow(232): not growing since there are already 1913 row(s), max size 1048576
12-30 11:48:24.599: ERROR/CursorWindow(232): The row failed, so back out the new row accounting from allocRowSlot 1912
12-30 11:48:24.620: ERROR/Cursor(232): Failed allocating fieldDir at startPos 0 row 1912
12-30 11:48:27.340: DEBUG/Cursor(232): finish_program_and_get_row_count row 3266
12-30 11:48:28.070: ERROR/Calendar(Vikas)(384): Uncaught exception in EasSyncServicejava.lang.NullPointerException
12-30 11:48:28.089: ERROR/Calendar(Vikas)(384): Sync ended due to an exception.

Ответы [ 2 ]

6 голосов
/ 30 декабря 2010

Класс CursorWindow поддерживает чтение только 1 МБ данных на запрос:

#define MAX_WINDOW_SIZE (1024 * 1024)

(Источник)

Попробуйте выполнить одно или несколько из следующих действий:

  • Запросить меньше строк.
  • Запросить меньше столбцов.
  • Разделите запрос на более мелкие запросы и выполняйте их по одному.

Один из способов улучшить ситуацию - сохранить последнюю дату синхронизации на сервере и синхронизировать только те изменения, которые произошли после этой даты.

SELECT *
FROM calendar
WHERE modified > 'some date'
1 голос
/ 02 ноября 2011

У меня была такая же проблема, в моем случае это было связано с NullPointerException путем анализа информации TimeZone (к сожалению, трассировка стека теряется в коде).

Возможно, на вас влияет та же проблема.

Посетите http://code.google.com/p/android/issues/detail?id=21435, Я открыл проблему в Google, но похоже, что они не заинтересованы в проблеме. В настоящее время проблема отклонена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...