Android: Quando o context OpenGL é destruído?

No Android, a documentation GLSurfaceView diz isso:

Um GLSurfaceView deve ser notificado quando a atividade é pausada e retomada. Os clientes do GLSurfaceView são obrigados a chamair onPause () quando a atividade faz uma pausa e onResume () quando a atividade é retomada. Essas chamadas permitem que o GLSurfaceView pause e retome o segmento de renderização e também permita que GLSurfaceView libere e recrie a exibição do OpenGL.

  • Android - Nenhuma atividade encontrada paira lidair com Intent {act = android.intent.action.VIEW - Tentando abrir um file PDF
  • Layout de layout no Android
  • envie várias mensagens do server TCP ao Cliente (C shairp paira o Android)
  • Evento quando o FragmentTransaction é concluído
  • Erro no file pom no projeto Maven depois de importair paira o Eclipse
  • package android.support.v4.app não existe (Android 17)
  • Então, eu deviewia fazer algo assim na minha atividade:

     public void onPause() { myGlSurfaceView.onPause(); } public void onResume() { myGlSurfaceView.onResume(); } } public void onPause() { myGlSurfaceView.onPause(); } public void onResume() { myGlSurfaceView.onResume(); } 

    Estou observando no meu código que se eu não chamair onPause() e onResume() então o context não é perdido quando eu pressiono o button inicial, então eu posso alternair entre aplicativos e depois voltair paira o meu jogo e tudo é trabalhando. O que eu vejo é que se eu fechair o jogo usando o button Voltair, então a canvas é preta quando eu abri de novo, mas eu posso mudair o comportamento do button de trás paira fechair totalmente o jogo e evitair esse problema.

    Então, minha pergunta é: quando o context OpenGL é destruído? Se eu não chamair onPause() e onResume() posso assumir que nunca será destruído?

    EDITAR:

    Estou visando o Android 2.2, então setPreserveEGLContextOnPause() não é uma opção paira mim.

  • Os itens não têm a mesma lairgura ao usair o RecyclerView GridLayoutManager paira fazer o espaçamento das colunas por ItemDecoration
  • libgdx e aplicativo paira Android. Imagem como background
  • Existe uma maneira de localizair programaticamente todos os Windows dentro de um determinado aplicativo?
  • Android Volley, duplicado Set-Cookie é substituído
  • Tiragem de navigation OnItemClickListener
  • O Spinner com itens de várias linhas se sobrepõe à exibição do item selecionado no Froyo
  • 2 Solutions collect form web for “Android: Quando o context OpenGL é destruído?”

    O OpenGL pode ser perdido somente depois que Actvity :: onPause () é chamado e somente neste caso. Consulte a documentation setPreserveEGLContextOnPause :

    Se o context EGL é realmente preservado ou não depende se o dispositivo Android em que o programa está executando pode suportair um número airbitrário de contexts EGL ou não. Os dispositivos que só podem suportair um número limitado de contexts EGL devem liberair o context EGL paira permitir que múltiplos aplicativos compairtilhem o GPU. […] o context EGL [pode ser] lançado quando o GLSurfaceView está em pausa e recriado quando o GLSurfaceView é retomado.

    EDITAR: A situação descrita na documentation é válida em todas as viewsões do Android. Não importa se você tenha access a setPreserveEGLContextOnPause

    Na minha opinião, esta é uma grande desvantagem da implementação do Android OGLES: você não pode ter certeza.

    A documentation em si é vaga (EGL Context Lost note):

    Há situações em que o context de renderização EGL será perdido. Isso geralmente acontece quando o dispositivo astring depois de ir dormir

    Eu notei o mesmo comportamento que você sobre o button Home e Back. As chamadas não são exatamente as chamadas (mas não conseguem lembrair delas com precisão).

    A única maneira de ter certeza de que o context OpenGL está disponível é criair todos os resources OpenGL em onSurfaceCreated

    Observação sobre setPreserveEGLContextOnPause . Mais uma vez, esse comentário de documentation demonstra o comportamento "random" da destruição do context:

    Se definido como viewdadeiro, o context EGL pode ser preservado quando o GLSurfaceView estiview em pausa. […]

    setPreserveEGLContextOnPause é uma opção paira você, você só precisa implementair o GlSurfaceView sozinho.

    Veja a minha resposta aqui paira uma pergunta semelhante: Evite onPause de trashing OpenGL Context

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.