несколько под-действий, которые вызывают мало памяти - PullRequest
0 голосов
/ 21 февраля 2011

Мое приложение требует, чтобы пользователь прошел через несколько страниц ввода (процесс регистрации).Поскольку пользователь углубляется в регистрацию, я должен сохранять данные нетронутыми, пока пользователь не нажмет «закончить».Этот процесс включает в себя действие, вызывающее подэтапы, и те подэтапы, вызывающие другое подэтап.

Поток выглядит так: Main -> Sub-Activity (часть 1 регистрации) -> Sub-Activity (part2)-> Sub-Activity (часть 3).

Проблема здесь в том, что у меня появляется предупреждение о нехватке памяти от logcat, и различные процессы уничтожаются, когда пользователь углубляется в приложение.Я уже пытался сохранить доступную память, не передавая пользовательские объекты между действиями, а сохраняя их в mysqllite и извлекая их при необходимости.Еще один момент, который нужно добавить, это то, что я не имею в виду изображения и используемые элементы управления, это просто текстовые просмотры, редактируемые просмотры и прядильщики.

Мой вопрос: часто ли возникают проблемы с нехваткой памяти, когда есть несколько подэтапов?прикованный?Как мне сделать это, чтобы освободить память?Использует ли пользовательский элемент управления значительно больше памяти, чем предустановленный?(Одна из моих догадок)

* Редактировать * Я нашел причину проблем с нехваткой памяти.Это не имеет ничего общего с суб-деятельностью.Виновником являются пользовательские элементы управления, которые я использую.Я провел тест с использованием предустановленных элементов управления, и общая производительность приложения значительно улучшилась.У меня больше нет предупреждения о нехватке памяти, и теперь все работает гладко.

1 Ответ

2 голосов
/ 21 февраля 2011

Я не думаю, что часто возникают проблемы с памятью с субактивностями. Я использовал хост вкладок с 5 вкладками и 3-4 действиями в каждом, плюс сложные методы, вызовы http и адаптеры изображений, и проблем не было (таким образом, activites не вызывает метод onDestroy, а просто вызывает onPause, а затем onResume). попробуйте иметь меньше глобальных переменных напр. просто ссылайтесь на представления и получайте их данные, когда вы нажимаете следующую кнопку, чтобы перейти к другому действию или чему-то в этом роде, чтобы сборщик мусора собирал мусор. удалить некоторые ссылки при вызове onPause, а затем, если они вам понадобятся снова, просто ссылаться на них снова (возможно, на onResume)

...