Большое использование памяти с использованием контент-провайдеров - PullRequest
1 голос
/ 10 мая 2011

У меня есть приложение, которое отслеживает несколько поставщиков контента, таких как календарь, список контактов, gmail и т. Д.

Приложение работает нормально, но я обнаружил, что оно может использовать до 70 МБ памяти. Когда я смотрю в gingerbread на использование памяти, само приложение использует около 6-7 МБ, а остальные - контент-провайдеры, например, на данный момент:

Приложение для Android Core - 16 МБ - используются контакты поставщика

Gmail - 36 Мб - Gmail провайдера используется

Хранение календаря 3.9mb - Календарь провайдера используется

Когда я запускаю приложение, потребление памяти низкое, но, как только, например, я получаю сообщение Gmail, память увеличивается. Когда я запрашиваю контент-провайдеров, я всегда проверяю, закрыты ли открытые курсоры.

Есть что-то еще, что я должен закрыть, что мне не хватает? Я не хочу отменять регистрацию наблюдателя, поскольку я все еще хочу следить за изменениями в будущем.

1 Ответ

0 голосов
/ 12 мая 2011

Кажется, моя проблема заключалась в использовании нескольких курсоров внутри друг друга. Я понятия не имею, почему, но как только я изменил свой код для выполнения запроса, сохранил результаты в коллекции, закрыл запрос и затем перебрал эту коллекцию, чтобы выполнить запрос более низкого уровня. Сейчас я не вижу действительно большой памяти Useage.

Я закрывал курсоры каждого из них в кратчайшие сроки способом написания кода, но таким образом запрос закрывается раньше.

...