2

У меня есть 8 различных действий, которые открывают друг друга на случайном нажатии кнопки. После нажатия кнопки, которая открывает новую активность примерно 15 раз, она сработает. Нужно ли мне закрывать действия или есть другое решение?Как исправить ошибку OutOfMemory в java?

+0

Возможно, проблема в том, что они сначала открывают друг друга? – 3kings

+0

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

+0

Вероятно, вы должны решить эту проблему, используя меньше действий .... – FishStix

ответ

0

Вы можете запросить больше размер кучи, добавив это в манифесте:

android:largeHeap="true" 

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

1

Как сказал Гордый Пандей, вы можете захотеть изучить фрагменты вместо действий. Другой возможный способ - позвонить finish(); сразу после запуска следующего действия. Это закроет предыдущую активность. Однако, если вы когда-либо собираетесь вернуться к этому действию с помощью кнопки «Назад» или чего-то еще, этого не будет.

1

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

  • Ваши действия удерживают ссылку, которая еще жива. Это предотвратит очистку GC от старых действий.

, например,

  • Посмотрите на анимации, которые не очищаются должным образом.

Лучший способ справиться с этим - найти утечку памяти.

https://developer.android.com/studio/profile/investigate-ram.html

Предложение:

Как mentined 3kings, попробуйте сделать в одной деятельности. т.е. использовать фрагменты!

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