为什么我的Android设备上没有调用LibGDX的resume()方法?

时间:2014-02-25 02:26:19

标签: java android libgdx resume

我有多个运行Android操作系统的设备。我一直在构建一个LibGDX游戏,并且一直遇到问题,每当用户按下主页按钮然后继续重新进入应用程序时,应用程序就会重新启动。 我不想要这个。我最近一直在和很多人交谈,试图找出为什么我的resume()方法无法在我的设备上运行。这种方法可以帮助我重新加载我的数据/资产,并且在用户退出之前保持游戏

请告诉我:为什么我的设备没有运行这个pause()方法,但很多其他人的设备都在运行?

备案:我测试的两款设备是Galaxy S4手机和Nexus 7平板电脑。

2 个答案:

答案 0 :(得分:3)

当Android系统不在前台时,您无法控制Android系统如何管理应用程序的生命周期。因此,您需要处理所有可能的转换。设备可以在后台运行时自由终止您的应用程序(特别是如果它使用相对大量的资源)。

在Libgdx中,resume方法仅在暂停的实际简历上调用(即,长按home切换到另一个应用程序,然后长按home切换回来)。其他框架(包括裸Android)通常在首次启动时调用resume,因此可能会引起混淆。 (只需将第一次开始工作放在create回调中。)

有关Libgdx Android应用程序生命周期以及如何重新创建各种案例的更多详细信息,请查看: http://bitiotic.com/blog/2013/05/23/libgdx-and-android-application-lifecycle/

答案 1 :(得分:2)

要完成P.T.的答案,我想添加以下技巧。 LibGDX在第一次启动时没有调用resume是非常不直观的。但你可以自己轻松地模拟它。

public void create() {
    resume();
}

public void resume() {
    // this is the only place where you will initialize all assets and your screen/game
}

请勿在{{1​​}}中执行任何操作,只需将工作转发至create()即可。这样你就不会有任何代码重复,你的initcode将一直运行。