当前位置: 首页 > 知识库问答 >
问题:

IOS上恢复后的robovm黑屏

康弘义
2023-03-14

我有一个libgdx应用程序。当我使用libgdx 1.1.4和robovm 1.0.0时,它在Android和IOS上都运行良好。Beta版本。最近我升级到libgdx 1.6.3和robovm 1.4。现在Android版本工作正常,但IOS应用程序有一点小故障。问题是,如果我按下home按钮暂停应用程序,然后恢复它,我会得到一个黑屏。应用程序不会崩溃。我也没有在日志中看到任何东西。

有人知道会发生什么吗?

我真的很感激任何帮助。提前谢谢。

__更新__

让我印象深刻的是,当我恢复游戏时,没有任何恢复方法(XXXGame类和XXXScreen类中的方法)被调用。准确地说,我在所有这些方法中都有日志语句来查看程序流是如何运行的。我暂停游戏时看到日志,但恢复游戏时什么也看不到。

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

__UPDATE2__

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

默认实现是在Game类上缺少恢复方法。所以我添加了以下内容:

    @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:恢复行记录在哪里。我在方法中注释掉了super.resume()以防止它,但没有帮助。

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

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

共有1个答案

陶弘业
2023-03-14

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

以下方法来自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绑定中提到的任何事情。然而,这是一个不去了。对这些方法的以下更改修复了该问题:

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

我感谢所有花时间就这个问题发表宝贵意见的人。

 类似资料:
  • 我使用Xcode6.4,我的应用刺激器成功构建,然后启动屏幕,然后一个黑屏出现,它是堆栈。我尝试了不同的项目,同样的事情出现黑屏再次,但没有错误。

  • 我正在用OpenFL开发一个android游戏。当我在手机上测试它时,它启动得很好。现在,如果我停用游戏应用程序,并在短时间后返回它,它显示黑屏不到一秒钟,然后返回游戏。 然而,如果游戏应用程序在后台停留大约10分钟,那么如果我再次打开它,它就会显示黑屏,然后游戏在等待15秒之后就会出现,或者它根本就不会出现--只是一个黑屏。(至此,既然我可以下拉通知栏,android就没有冻结了。) 游戏中也有

  • 试 卸载然后重新安装Xcode 重置内容 问题 我启动我的应用程序并运行,我知道这个cos我在控制台中看到print()的日志输出。但是,模拟器屏幕是空白的,只是黑色的。根本没有用户界面。我可以消除我的应用程序是问题,因为当我按下(模拟按下)主页时,它应该向我显示跳板,但它是空白的(黑屏)。我重置了内容 有人能帮忙吗? 附加: 我已经完全删除了Xcode,从Mac上删除了它的所有痕迹。然后重新安装

  • 我有一个我在标题中提到的问题。 根据这个答案,它确实出现在ViewController中的ViewDidAppear中。但是如何将这段代码导入java,如果我想在游戏结束后更改旋转,那么在哪里调用它。 我试着这样做: 卡住了,因为我需要NSObject...

  • 编者注:RoboVM 项目已经关闭,目前有开源替代产品 BugVM。 RoboVM 编译器可以将 Java 字节码翻译成 ARM 或者 x86 平台上的原生代码,应用可直接在 CPU 上运行,无需其他解释器或者虚拟机。 RoboVM 同时包含一个 Java 到 Objective-C 的桥,可像其他 Java 对象一样来使用 Objective-C 对象。大多数 UIKit 已经支持,而且将会支持