2017-02-20 24 views
1

Я пишу приложение Unity iOS, которое отслеживает местоположение пользователя в фоновом режиме. Когда приложение работает на переднем плане, оно занимает 50-60 МБ памяти, и когда оно идет фон, все данные остаются в памяти. В этой ситуации приложение заканчивается из-за проблемы с памятью за несколько секунд. Resources.UnloadUnusedAssets(); ничего не уменьшает.Unity для iOS занимает много памяти в фоновом режиме

Как уменьшить занимаемую память в фоновом режиме?

ответ

1

Это желаемое поведение. Когда приложение входит в BG, iOS не начинает освобождать память, это ответственность приложения.

Лучший способ решения проблем с памятью - выполнить профилирование приложения и посмотреть, куда идет память. В большинстве случаев текстуры занимают большой объем памяти, поэтому вы можете думать об уменьшении их размера или использовании сжатия. Другое дело, что вы можете отключить mipmapping для текстур, но это даст только хорошие визуальные результаты, если вы используете текстуры для 2D UI, для 3D это не очень хорошая идея.

Resources.UnloadUnusedAssets() будет работать только в случае неиспользованных активов, если вы ничего не сделаете, что есть тонкие изменения, которые будут иметь какой-либо эффект.

Один маленький взлом, который вы можете попробовать, - создать пустую сцену и перейти к ней при движении в фоновом режиме. На сцене может быть одна 2D-текстура, показывающая, что приложение находится в фоновом режиме. Затем вы можете позвонить Resources.UnloadUnusedAssets() и, конечно же, вернуться на главную сцену, возвращаясь на передний план.

+0

Благодарим за отзыв! Я уже думал о создании пустой сцены, и этот способ выглядит довольно хорошо. –

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

  • Нет связанных вопросов^_^