[英]How to stop In-App Billing client from losing EGL Context?
我有一個包含兩個活動的Android項目。 我的主要活動之一是使用從本地代碼更新的GLSurfaceView
。 另一個是PurchaseActivity
,可以打開Google的應用內結算客戶進行購買。 進行購買可以正常工作。
我遇到的問題是, PurchaseActivity
完成之后,無論它成功完成,錯誤還是被取消,並且切換回主活動,EGL上下文消失,我收到:
在沒有當前上下文的情況下調用OpenGL ES API(每個線程記錄一次)
之后,將onSurfaceCreated()
觸發onSurfaceCreated()
和onSurfaceChanged()
方法。
我發現這個問題類似,但是我的問題已經在單獨的活動中運行,如果我刪除了finish()
調用,它只會停留在PurchaseActivity
。
撥打應用內結算電話后,我真的需要重新加載紋理嗎? 由於該應用尚未暫停,因此目前似乎沒有必要。
我的渲染器代碼很基本,但是由於任何原因,在關閉計費客戶端窗口之后,它會觸發一個新界面並炸毀我的本機代碼:
public class GameRenderer implements GLSurfaceView.Renderer
{
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{ }
public void onSurfaceChanged(GL10 gl, int width, int height)
{
BaseLib.setScreenSize(width, height);
BaseLib.init();
}
public void onDrawFrame(GL10 gl)
{
BaseLib.render();
}
}
你看過這個話題嗎?
我猜您在切換活動時會收到onPause,這告訴GLSurfaceView釋放資源。
在API 11+上,有一個命令setPreserveEGLContextOnPause
,但是如果您希望將API級別設置為更低的級別,則不確定這是否是您的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.