java - 在 IOS 上恢复后 robovm 黑屏

标签 java ios libgdx robovm

我有一个 libgdx 应用程序。当我使用 libgdx 1.1.4 和 robovm 1.0.0.Beta 版本时,它曾经在 Android 和 IOS 上运行良好。最近我升级到 libgdx 1.6.3 和 robovm 1.4。现在 Android 版本运行良好,但 IOS 应用程序存在一些小故障。问题是,如果我按主页按钮暂停应用程序然后恢复它,我会看到黑屏。应用程序不会崩溃。我也没有在日志中看到任何内容。

有人知道会发生什么吗?

如果有任何帮助,我将不胜感激。提前致谢。

__更新__

令我震惊的是,当我继续游戏时,没有调用任何恢复方法(XXXGame 类和 XXXScreen 类中的方法)。准确地说,我在所有这些方法中都有日志语句,以查看程序流程如何进行。我在暂停游戏时看到日志,但在恢复游戏时什么也看不到。

这在我看来是一个基本问题,因为如您所知,resume 方法是 libgdx 生命周期方法的一部分,无论如何都应该调用。问题不能出在 libgdx 端,因为应用程序在 Android 上运行良好。所以,我想知道 robovm 方面是否有问题。我错过了什么吗?

__UPDATE2__

我用gui新建了一个libgdx工程,看看在IOS平台上是否出现同样的问题。看起来 pause-resume-pause-resume 在新项目上运行良好。所以我开始将新项目与我的进行比较。我的游戏类继承自 com.badlogic.gdx.Game 但新项目的游戏类实现了 com.badlogic.gdx.ApplicationAdapter。我已经更改它以使它们匹配。它没有破坏新项目。

默认实现缺少 Game 类的 resume 方法。所以我添加了以下内容:

    @Override
    public void resume() {
//      super.resume();
        Gdx.app.log("Testing", "resume");
    }

令我惊讶的是,在日志中,我看到两组简历消息如下:

2015-07-01 08:05:52.435 IOSLauncher[54152:2661071] [debug] IOSApplication: created
2015-07-01 08:05:52.706 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:05:59.093 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:05:59.093 IOSLauncher[54152:2661071] [info] Testing: pause
2015-07-01 08:06:00.670 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:06:00.670 IOSLauncher[54152:2661071] [info] Testing: resume
2015-07-01 08:06:04.587 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:06:04.587 IOSLauncher[54152:2661071] [info] Testing: pause
2015-07-01 08:06:06.640 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed
2015-07-01 08:06:06.640 IOSLauncher[54152:2661071] [info] Testing: resume
2015-07-01 08:06:09.300 IOSLauncher[54152:2661071] [debug] IOSApplication: paused
2015-07-01 08:06:09.300 IOSLauncher[54152:2661071] [info] Testing: pause

我不确定这个 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed 行记录在哪里。我在防止它的方法中注释掉了 super.resume() 但它没有帮助。

我检查了我自己的应用程序,看看我是否得到了类似于 IOSLauncher[54152:2661071] [debug] IOSApplication: resumed 的东西,但我不能。

当我摆弄代码并记录我在这里所做的事情时,我发现了问题。我很快就会把它贴在这里。

最佳答案

我发现了问题。我将在这里记录它,希望它可以为其他人节省时间。

以下方法来自 IOSLauncher.java(在 IOS 项目中)

  @Override
  public void didBecomeActive (UIApplication application) {
      FacebookManager.getInstance().handleDidBecomeActive(application);
  }


  @Override
  public void willTerminate (UIApplication application) {
      FacebookManager.getInstance().handleWillTerminate(application);
  }

以上代码在早期版本的 libgdx/robovm 上运行良好,没有任何故障。实际上我已经做了robovm IOS bindings中提到的任何事情那时。不过现在是走投无路了。以下对这些方法的更改解决了问题:

  @Override
  public void didBecomeActive (UIApplication application) {
      super.didBecomeActive(application);
      FacebookManager.getInstance().handleDidBecomeActive(application);
  }


  @Override
  public void willTerminate (UIApplication application) {
      super.willTerminate(application);
      FacebookManager.getInstance().handleWillTerminate(application);
  }

我感谢所有花时间就此问题分享宝贵意见的人。

关于java - 在 IOS 上恢复后 robovm 黑屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31148836/

相关文章:

ios - 我如何获得这样的 TextField

ios - 使用 iOS6 在 Storyboard 中旋转 UIView

java - 如何修复高 x 位置的 libgdx 相机错误?

java - 在 Java (Android) libgdx 中,触摸时绘制/渲染动画

java - 用于 spring 和 hibernate 应用程序的虚拟主机

javascript - 使用 HTML 和 Java 创建与 google 相同的搜索框

javascript - Java 服务器不使用 OutboundSseEvent/JAX-RS 服务器发送事件 (SSE) 服务发送消息事件

iphone - 将客户端证书导入 iPhone 的钥匙串(keychain)

java - Libgdx,文本大小从安卓到桌面不同

java - 在 Java 中解决我的快速排序算法的问题?