簡體   English   中英

如何阻止應用內結算客戶端丟失EGL上下文?

[英]How to stop In-App Billing client from losing EGL Context?

我有一個包含兩個活動的Android項目。 我的主要活動之一是使用從本地代碼更新的GLSurfaceView 另一個是PurchaseActivity ,可以打開Goog​​le的應用內結算客戶進行購買。 進行購買可以正常工作。

我遇到的問題是, 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破壞OpenGL上下文

我猜您在切換活動時會收到onPause,這告訴GLSurfaceView釋放資源。

在API 11+上,有一個命令setPreserveEGLContextOnPause ,但是如果您希望將API級別設置為更低的級別,則不確定這是否是您的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM