2012-04-16 2 views
0

У меня есть активность с scrollview для некоторых опций флажков и кнопок в табусте и всякий раз, когда активность переключается в tabhost в первый раз, моя память приложений использование скачков ~ 7 мб.My Android Scrollview в tabhost потребляет слишком много памяти

Это ставит меня над пределом кучи 16 мб.

Есть ли способ уменьшить это массовое потребление памяти и полностью удалить его всякий раз, когда пользователь переключается с вкладки опций на другую вкладку?

+0

Android позаботится о вашей памяти и уничтожит приостановленные «действия» в экстремальных ситуациях с низкой памятью ». По-видимому, этого следует избегать. Рекомендуется использовать 'Views' вместо' Activities' в качестве содержимого вкладки. Но это не поможет, чтобы избавиться от памяти ~ 7mb. Активность, содержащая кнопки _soome_ и флажки, конечно, не может занять память ~ 7mb. Используете ли вы большие растровые изображения (background, imagebutton и т. Д.) Или другие ресурсы в своей деятельности? – 207

+0

Привет, Я использую только 1 маленькое растровое изображение, 13 флажков, 6 кнопок и 4 текстовых изображения, и все. Он довольно большой, и я думаю, что андроид создает 1 большое растровое изображение со всей видимости, чтобы прокручивать его, и это занимает слишком много места. И я не хочу полагаться на андроид, чтобы справиться с этим огромным куском памяти, но мне очень хотелось бы сделать это сам, когда я думаю, что это подходящее время. – HardCoder

+0

Да точно. Вы не должны «заставлять» систему в такой ситуации. Кроме того, чем больше память, тем дольше требуется GarbageCollector, и ваше приложение выглядит вялым. Из-за этого я бы не искал способ освободить память (активность). Я бы искал причину, по которой ваша деятельность занимает столько памяти. Вы можете удалить растровое изображение и посмотреть, как это влияет на использование кучи. – 207

ответ

2

Внутри вашего TabActivity, попробуйте создать свои Намерения, как это:

Intent myIntent = new Intent(this, MyAwesomeTabView.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

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

+0

Вот именно то, что я искал. Спасибо. – HardCoder

Смежные вопросы