首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当应用程序不可见时libgdx更新场景

当应用程序不可见时libgdx更新场景
EN

Stack Overflow用户
提问于 2014-08-22 07:43:23
回答 2查看 507关注 0票数 2

我正在使用libgdx的呈现()函数来用时间增量更新场景,然后绘制场景。但是,当应用程序不可见时,render()函数将不再被调用,这将导致场景停止更新,例如,动画将停留在最后一帧,直到app返回到前台为止。

问题是,我正在构建一个在线实时游戏,不能“暂停”客户端。当应用程序切换到后台时,游戏必须在没有绘制场景的情况下继续更新场景,这样当用户切换回应用程序时,他就可以看到最新的场景,而不是滞后的暂停和恢复场景。

我的问题是如何在libgdx中实现这一点,这样即使应用程序变成后台,场景也会不断更新?有人遇到和我一样的问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-23 20:53:19

在Libgdx应用程序中,只有在呈现时才调用呈现线程,因此只有当呈现有屏幕时才调用。对于大多数游戏,这是唯一的时间,游戏应该做任何计算,所以结合更新和渲染有很多意义。

在Android系统中,应用程序通常只在“前台”时得到操作系统分配给它的CPU周期。要在后台运行应用程序,需要使用不同的平台API (例如,请参阅https://developer.android.com/training/best-background.html)。仅仅创建额外的线程并不足以让应用程序在后台运行(操作系统可能决定完全终止它,如果它想要为其他事情返回RAM )。

一般情况下,用户不希望Android应用程序在前景不佳时继续运行(并使用电池)。

另外,即使您的应用程序被编码为在后台正确运行,当前台应用程序显著使用CPU时,您的后台应用程序也可能无法运行。

您可以连接到挂起和恢复事件暂停您的游戏,然后“快速转发”您的游戏状态的必要。或者,如果您需要在云中实时运行计算,则在云中进行计算。

票数 1
EN

Stack Overflow用户

发布于 2014-08-24 14:57:54

如果场景中不需要GL上下文,您可以尝试从其他线程更新场景。

或者,您可以在Android项目中的onPause类中覆盖AndroidApplication ()方法,并继续使用render()方法进行更新。在onPause()方法的AndroidApplication中,图形被告知停止呈现。

也许您可以创建界面类来更新您的场景,而无需在应用程序暂停时不断地呈现有关电池寿命的内容。

这是来自onPause()方法的代码。也许这会让你找到正确的解决方案。

代码语言:javascript
复制
@Override
protected void onPause () {
    boolean isContinuous = graphics.isContinuousRendering();
    graphics.setContinuousRendering(true);
    graphics.pause();

    input.onPause();

    if (isFinishing()) {
        graphics.clearManagedCaches();
        graphics.destroy();
    }
    graphics.setContinuousRendering(isContinuous);

    graphics.onPauseGLSurfaceView();

    super.onPause();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25441974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档