我将资源加载到create
并将其置于pause
。
但是当游戏关闭时,该过程可能会也可能不会终止。也就是说,它可能只是停止的活动,而不是过程。在这种情况下,当快速重新开启游戏时,将不会调用create
。只会调用resume
。那么,我不应该在resume
中重新加载我的资产吗?
答案 0 :(得分:0)
使用Android中活动的生命周期方法初始化如下:
这意味着,例如,我在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,则前一个实例中的所有非处置资产仍然保留在内存中,现在已经泄露。