gpt4 book ai didi

android - 如何阻止应用内结算客户端丢失 EGL 上下文?

转载 作者:行者123 更新时间:2023-11-30 04:16:08 24 4
gpt4 key购买 nike

我有一个包含两个 Activity 的 Android 项目。一个是我的主要 Activity ,使用从 native 代码更新的 GLSurfaceView。另一个是 PurchaseActivity,它打开 Google 的应用内结算客户端进行购买。进行购买工作正常。

我遇到的问题是,在 PurchaseActivity 完成后,无论它是成功完成、出错还是被取消,然后切换回主 Activity ,EGL 上下文都会消失,我接收:

call to OpenGL ES API with no current context (logged once per thread)

之后 onSurfaceCreated()onSurfaceChanged() 方法被重新触发。

我找到了 this question类似,但我的已经在一个单独的 Activity 中运行,如果我删除 finish() 调用,它只会停留在 PurchaseActivity 中。

我真的需要在进行应用内结算调用后重新加载纹理吗?似乎此时没有必要这样做,因为应用程序没有被暂停。

我的渲染器代码非常基础,但无论出于何种原因,在计费客户端窗口关闭后,它会触发一个新界面并破坏我的 native 代码:

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();
}
}

最佳答案

你看过这个帖子吗?

Prevent onPause from trashing OpenGL Context

我猜你会在切换 Activity 时收到一个 onPause 通知 GLSurfaceView 释放资源。

在 API 11+ 上有一个命令 setPreserveEGLContextOnPause,但不确定如果您想要针对比该级别更低的 API 级别,这是否适合您。

关于android - 如何阻止应用内结算客户端丢失 EGL 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9983912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com