2010-07-03 2 views
6

Я действительно борется здесь, и он удерживает меня.Каков правильный способ управления жизненным циклом активности с помощью OpenGL

Каков правильный способ обработки OpenGL и Activity, который запускает вспомогательные действия или возвращается на главный экран. И пусть он возобновится именно там, где это было.

У меня есть полурабочее, поскольку оно стоит, текстуры/VBOs перезагружаются при onResume() при необходимости.

Но иногда при запуске вспомогательных действий и возвращении или выходе на главный экран и возвращении onCreate снова запускается. Это испортит все это, и я получаю черный экран.

Я уверен, что все это неправильно. Может кто-нибудь объяснить, как нужно обрабатывать такое действие?

ответ

1

С какой платформой вы работаете?

Причина, по которой я спрашиваю, заключается в том, что до Eclair вся эта область была пронизана ошибками, в результате чего приостановление/возобновление OpenGL в основном срабатывало только случайно. Тем не менее, похоже, они были исправлены Eclair, и наше приложение, похоже, приостанавливается и возобновляется достаточно надежно.

Что вам нужно Предполагается, что сделать, это зарегистрировать обратный вызов вашего SurfaceHolder, чтобы вы получили уведомление, когда поверхность появляется и исчезает. В методе surfaceDestroyed() вы полностью закрываете EGL, а затем в методе surfaceCreated() вы его повторно инициализируете. Вы не должны делать этого из методов onCreate()/onResume() вашей деятельности, так как поверхность может не отображаться и исчезать одновременно.

Это было заявлено, что наше приложение было разработано для Cupcake, когда все было довольно примитивно. Я понимаю, что в наши дни есть доступные классы полезности, которые делают для вас тяжелый подъем, поэтому, если вы используете одну из этих вещей, вы можете работать по-другому; и если вы этого не сделаете, вы можете посмотреть в них.

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