Мое приложение для iOS прекращено из-за нехватки памяти, когда я использую Photos.app

Я запускаю свое приложение на устройстве iOS 7.0.1 и iPod Touch 5-го поколения. Когда я выполняю следующие шаги, мое приложение завершает работу с ошибкой ниже на Xcode 5 без каких-либо ошибок в консоли.

App quit Unexpectedly Terminated due to Memory Pressure

Шаги: 1) Запустите мое приложение с помощью Xcode 5. Войдите в систему и перейдите на главную

2) Нажмите кнопку «Домой», чтобы мое приложение перешло в фоновый режим (я вижу, что мое приложение находится в фоновом режиме)

3) Запустите встроенное приложение «Фотографии» из iOS. Щелкните 1 или 2 изображения

4) После того, как вы сделали 1-2 снимка, приложение неожиданно закрылось из-за нехватки памяти.

Я ничего не делаю в своем приложении. Когда я проверил загрузку процессора, его 0% и использованный объем памяти = 15,2 МБ. Кроме того, в фоновом режиме не работает ни одно другое приложение, кроме моего приложения.

Кто-нибудь может помочь с этим? Спасибо

Я не понимаю, почему это происходит. Если я не использую Photos.app, то приложение работает без сбоев.


person iOSAppDev    schedule 26.12.2013    source источник
comment
Когда ваше приложение ничего не делает, iOS убьет его, как только пользователь сделает что-то ресурсоемкое. Если ваше приложение что-то делает, то оно с меньшей вероятностью будет убито. Но все же может случиться.   -  person Abhi Beckert    schedule 26.12.2013


Ответы (1)


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

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

person jrturton    schedule 26.12.2013
comment
Помните, что iOS не выбирает случайным образом, какие фоновые приложения следует закрыть. Это основано на том, что эти приложения делают в данный момент. Если приложение что-то делает (например, получает обновления GPS) и использует только 15 МБ, оно, вероятно, не будет уничтожено, если только приложению переднего плана действительно не требуется 100% ресурсов. - person Abhi Beckert; 26.12.2013
comment
Верно, но ОП сказал, что это единственное работающее приложение. И приложение для фото какое-то хреновое... - person jrturton; 26.12.2013
comment
@jrturton Спасибо за ваш ответ. В моем приложении реализован тайм-аут простоя. Я не могу использовать восстановление состояния, так как всякий раз, когда мое приложение запускалось, мне нужно запрашивать вход в систему из соображений безопасности в соответствии с требованиями проекта. На данный момент происходит то, что мое приложение закрывается из-за приложения «Фотографии», и в следующий раз приложение запрашивает вход в систему. Итак, тестировщики думают, что тайм-аут простоя работает неправильно. - person iOSAppDev; 26.12.2013
comment
Вы всегда можете сохранить время, когда пользователь ушел в фоновый режим, и автоматически войти в систему, если время следующего запуска достаточно скоро. Зависит от характера остальной части вашего приложения. - person jrturton; 26.12.2013