Какие условия приведут к закрытию приложения для iOS операционной системой, помимо высокого использования памяти? - PullRequest
0 голосов
/ 28 марта 2012

У меня неприятная проблема со стабильностью в приложении для iPad. На iPad 2 приложение работает нормально, без сбоев, но на iPad 1 оно отключается случайным образом так же, как и при слишком большом использовании памяти (приложение перестает работать на устройстве, отладчик переключается на « Приостановлено «состояние», и в окне консоли появится «(gdb)»). Однако объем памяти меньше 5 МБ, поэтому я не знаю, что делать, чтобы ОС не закрывала меня.

Мое приложение работает в режиме реального времени с OpenGLES и аудиоустройством RemoteIO. Так что он постоянно обрабатывается, но сбои не происходят во время интенсивного использования.

Кроме того, приложение намного стабильнее, когда не запускается в отладчике.

iOS закрывает приложения по какой-либо причине, кроме высокого использования памяти? И как мне отладить, что это за причины, чтобы я мог их исправить?

Спасибо!

EDIT

Я обнаружил, что сбои, по-видимому, связаны с количеством вершин, которые я строю с помощью GL_LINE_STRIP. У меня есть несколько объектов на экране, каждый из которых состоит из одной линейной полосы с 2500 вершинами. Как только у меня будет ~ 8 объектов (всего ~ 20000 вершин), стабильность станет неясной.

Кроме того, я альфа-смешиваю линейки.

Любой способ исправить это, не выбрасывая мое разрешение?

1 Ответ

0 голосов
/ 29 марта 2012

Решение, которое я нашел, состояло из двух частей:

1) Время от времени я отображал некоторые виды UIKit поверх представления OpenGLES. Всякий раз, когда отображались эти представления, прекращение всех вызовов рендеринга OpenGLES помогало стабилизироваться.

2) Вызов glFinish() для каждых нескольких вызовов glDrawArrays(GL_LINE_STRIP, ... ) также помог стабилизироваться.

Изменение альфа-канала для полосок на 1 не имело никакого эффекта.

BOTTOM LINE : Ваше приложение может аварийно завершить работу без трассировки стека или ошибок при наличии (предположительно аппаратного) проблем с OpenGLES.

Я предполагаю, что сочетание представлений UIKit с представлением OpenGLES или вызовов glDrawArrays с большим количеством индексов может привести к перегрузке графических «буферов» (см. Последние абзацы здесь: http://www.songho.ca/opengl/gl_overview.html#flush)

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