Какое «зомби» приложение может вернуть из фона? - PullRequest
0 голосов
/ 30 июля 2011

В настоящее время я создаю свое первое приложение для магазина приложений, поэтому я прочитал здесь , что приложение должно использовать менее 30 МБ ОЗУ (iPhone 3G, iPhone 4).Я читал, что в какой-то момент iOS начнет охотиться за ресурсами, произвольно убивая и освобождая звуки, изображения и другие ресурсы из фоновых приложений.В настоящее время мое приложение использует ~ 5 МБ живых байтов, которые отображаются в инструментах, но я чувствую некоторую паранойю по поводу памяти :) Насколько я безопасен, когда приложение использует менее 10 МБ при настройке на iPhone3G и iPhone4?

Вопрос в том, если приложение переходит в фоновый режим, то сколько ресурсов iOS может освободить от него, пока, наконец, не убьет его?Если мое приложение перейдет в фоновый режим, а затем будет запущено 100 или более других приложений, что произойдет с моим приложением?Я не верю, что часть оперативной памяти является статичной для моего приложения, потому что память в каждом устройстве ограничена.ИМХО, если вы начнете цикл с открытия нового приложения, отправки его в фоновый режим, открытия другого - тогда ОЗУ устройства будет полностью использовано в какой-то момент времени.Затем, теоретически, если вы попытаетесь открыть новое приложение, то некоторые самые первые открытые приложения должны быть убиты iOS ...

В настоящее время я создаю небольшую игру с чистым UIKit, поэтому я использую многоUIView и UIViewImage объекты, и я не уверен, как справиться с этой теоретической ситуацией.Во время входа в фоновый режим мое приложение могло загружать много игровых UIViewImages, указатель на меню MVC и т. Д. Нужно ли мне кодировать какой-нибудь метод reloadALL для перезагрузки всех частей игры?Все было бы хорошо, если бы iOS полностью убила мое приложение, если бы память устройства была полностью использована.Но было бы неприемлемо, если бы iOS выпустила некоторые из моих UIViewImage в объектах игры или меню.В этом случае я не знаю, какого рода «зомби» (сколько ног, рук и т. Д. Моё приложение могло иметь после «воскресения») могло бы быть моим приложением.Пожалуйста, поделитесь своим опытом и мыслями:)

Ответы [ 3 ]

1 голос
/ 30 июля 2011

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

Тем не менее, управление памятью iOS поддерживает, например, освобождение объектов просмотра и ленивое восстановление в случае предупреждений памяти (пока ваше приложение все еще активно, проверьте UIViewController docs didRecieveMemoryWarning как сама система справляется с предупреждениями памяти)

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

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

0 голосов
/ 30 июля 2011

Нас не должно беспокоить общее количество изображений, используемых в приложении.Память используется только для тех изображений на активном экране.

0 голосов
/ 30 июля 2011

iOS будет отбраковывать данные UIKit (например, ваши изображения) и любые NSCache в памяти, когда это необходимо, когда они будут заземлены. Вам не нужно беспокоиться о восстановлении этого, хотя.

Однако вы все равно должны управлять своими собственными объектами и вещами; работа с отбором и восстановлением данных при получении соответствующих событий, таких как предупреждения памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...