何时以及为什么要加载和处置资产?

时间:2015-05-26 09:14:49

标签: android libgdx

我将资源加载到create并将其置于pause

但是当游戏关闭时,该过程可能会也可能不会终止。也就是说,它可能只是停止的活动,而不是过程。在这种情况下,当快速重新开启游戏时,将不会调用create。只会调用resume。那么,我不应该在resume中重新加载我的资产吗?

3 个答案:

答案 0 :(得分:0)

使用Android中活动的生命周期方法初始化如下:

  • onCreate() - >的onDestroy()
  • onStart() - >的onStop()
  • onResume() - >的onPause()

这意味着,例如,我在onCreate中初始化的内容,我应该在onDestroy中删除。所有三种方法都是一样的。

在您的情况下,我会在onStart中加载资源并将它们放在onStop中。

另请注意,可能无法调用onDestroy方法。

答案 1 :(得分:0)

如果我理解你的问题,如果你问为什么?如果是处置法,那么android负责释放资源是常见的,lidGDX。

在某些情况下,它会创建JVM的垃圾收集器无法访问的对象,这些对象是从应用程序的本机端创建的,而GC无法删除它们,因此您必须调用对象处置并非所有对象都需要使用dipose,在这里你可以看到一个列表:

http://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/Disposable.html

这也可能是这个答案的一部分,可以帮助您:

Game crash if interrupted while Splash Screen is on - LIBGDX

我为我的英语道歉,如果这个问题无法帮助你告诉我并删除

答案 2 :(得分:0)

dispose()中处理您的资产,或者当您完成这些资产并需要释放内存(例如切换到使用不同资产的新阶段)时。

游戏的dispose方法在活动的onPause()方法中调用,但仅在活动完成时才会调用,因此如果您只处理dispose(),则可以安全。如果申请流程仍然开放,则会调用dispose(),因此您很好。此时,如果您的游戏重新开启,则会再次调用create(),因此您无需担心resume()中的重新加载。

如果由于某种原因Android强制退出游戏,那么无论如何都会清除所有内存并且您无需担心泄漏。

您必须在dispose()中处置的原因是用户退出游戏活动而应用程序进程未关闭的情况。如果用户再次启动游戏Activity,则前一个实例中的所有非处置资产仍然保留在内存中,现在已经泄露。