繁体   English   中英

我何时以及为何应该装载和处置资产?

[英]When and why should I load and dispose assets?

我将资产加载到createpause它们。

但是,当游戏关闭时,该过程可能会终止,也可能不会终止。 即,可能只是停止的活动,而不是过程。 在这种情况下,当快速重新打开游戏时,将不会调用create resume将被调用。 然后,我是否也应该在resume重新加载我的资产?

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

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

这意味着,例如,我在onCreate中初始化的内容应该在onDestroy中摆脱。 这三种方法都相同。

在您的情况下,我将资产加载到onStart并将其处置在onStop中。

另外,请注意,可能不会调用onDestroy方法。

不,如果我理解您的问题,请问为什么? 根据处理法,通常由android负责释放资源lidGDX。

在某些情况下,它创建的对象超出了垃圾回收器,JVM的范围,这些对象是从应用程序的本机端创建的,GC无法删除它们,因此您必须调用未处理的对象所有对象都需要使用dipose,在这里您可以看到一个列表:

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

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

如果在“启动画面”打开时中断游戏崩溃-LIBGDX

我为我的英语致歉,如果这个问题不能帮助您告诉我,请删除

dispose()或完成处理后需要释放资产(例如,切换到使用其他资产的新阶段dispose()时,请dispose()资产。

游戏的dispose方法是在Activity的onPause()方法中调用的,但是仅当Activity完成时才调用,因此,如果仅在dispose()处置,则是安全的。 如果应用程序进程保持打开状态,则已调用dispose() ,所以您很好。 至此,如果您的游戏重新打开,将再次调用create() ,因此您无需担心在resume()重新加载。

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

而必须在dispose()中进行处置的原因是,当用户退出游戏活动,但应用程序进程未关闭时。 如果用户再次启动游戏活动,则来自先前实例的所有未处置资产仍保留在内存中,并且现在已泄漏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM