gpt4 book ai didi

android - 正确处理 Android 上的 Libgdx

转载 作者:行者123 更新时间:2023-11-29 17:49:00 25 4
gpt4 key购买 nike

我目前对我的 libgdx Android 游戏的 dispose() 实现不满意。

我目前正在做的是在我的应用程序启动时将我的所有 Assets 加载到 Assets 管理器中,传递它并使用 Assets 。

我测试了两个不同的东西:首先我根本没有处理,所以当通过 android 返回或主页关闭应用程序并重新打开时,一切正常,当前屏幕显示正确。我不确定在这种情况下 Assets 会发生什么。它们应该保留在内存中,并且可以在应用程序恢复时重复使用。但是如果 android 在后台杀死应用程序会发生什么。我想我遇到了内存泄漏?

所以我尝试在 onPause() 回调中处理并在 onResume() 中重新加载 Assets 。现在我的屏幕不再渲染了,所以我想我必须完全重建它,导致 assetmanager.get(...)在 scene2d actors contrustors 中现在必须更新?所以我尝试在 show() 方法中构建场景图,但没有成功,导致我的屏幕从中获取数据的游戏逻辑现在抛出了很多错误。当用户退出应用程序并恢复时,我只是从菜单重新启动来解决这个问题,我对这两个都不满意。

另外,我在屏幕的不同部分使用 FreeTypeFontGenerator 即时创建位图字体,我在隐藏屏幕时将其处理掉。所以,我想我在这里也有问题,当应用程序关闭并随后被 android 销毁时?

最佳答案

您应该在 Game/Screen/ApplicationListener 的 dispose 方法中进行处置。当 Activity 完成并且是处理所有 native 内存的适当位置时,Android 会调用它。它是自动完成的。

您不能指望在 Activity 完成并创建新的 Activity 后能够重用已加载的纹理,因此请确保您的 Assets 是在 Game/ApplicationListener 的 create 方法中加载的,而不是 恢复

Android 在后台杀死您的应用程序不会导致内存泄漏。 Android 能够在终止应用程序时从您的应用程序中回收所有内存。但是,如果您的 Activity 在您的整个应用程序未被终止的情况下关闭,那么您将泄漏未正确处理的内容。

LibGDX 中的内存泄漏发生在您使用任何实现 Disposable 的类时,并且您在使用完后没有处置它。

关于android - 正确处理 Android 上的 Libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24363419/

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