我不知道该怎么办。我的应用程序是一个iPad应用程序,我使用大约300 My的ram。有大约250 at的纹理加载游戏在任何给定的时间。
这就是问题所在。当我睡着了我的iPad,如果我睡了几分钟,然后回到我的游戏,它再次成为可玩的几秒钟。如果我在玩完游戏后离开了我的iPad,或者我的游戏还在运行大约一天,那么我就回去,我的游戏需要3.5分钟才能恢复。这不是一个bug,我看了很多次调试器,一切都如预期的那样工作。iOS必须从某个地方恢复堆,这比从头开始加载游戏花费的时间要长10倍。
我目前的解决方案是忘记恢复,我故意让我的应用程序崩溃,所以它在离开后重新启动,这使我进入相同的状态大约快10倍。但我不喜欢这个解决方案。
还有其他人遇到过这样的问题吗?在iPad休眠几个小时后,是否应该调用api或其他什么方法来降低恢复时间?这个问题有任何记载吗?
发布于 2015-07-13 11:34:55
我目前的解决方案是忘记恢复,我故意让我的应用程序崩溃,所以它在离开后重新启动,这使我进入相同的状态大约快10倍。但我不喜欢这个解决方案。
这是确保您的应用程序不会被批准在approved上发布的一种保证。这个问题有两种解决方案:
1)重新设计你的游戏。这方面有多种技术,包括:
将级别分解为较小的部分,因此每个阶段都需要更少的资产来加载。
缩水的纹理和资产。例如,使用256x256纹理而不是512x512。一个512x512纹理占用了四个256x256纹理的空间。你宁愿在几秒钟内在一个场景中加载四个纹理,还是1秒?
压缩你的纹理。压缩纹理比它们未压缩的纹理更小,加载速度更快。
您的应用程序甚至不会在原始的iPad Mini上运行,因为它是RAM --它有512 at,而且您目前正在尝试在任何给定的时间使用300 at。
2)禁止应用程序停留在后台.
每次你的应用失去焦点(除了锁定屏幕被切换),它将迫使自己重新加载从零.就像你现在已经做了一次强制撞车。请参见:
如果您不希望应用程序输入背景,将应用程序的UIApplicationExitsOnSuspend文件中的Info.plist键设置为YES
How to exit app while enter background
这些都是我的建议,不过老实说,如果可能的话,我会做第一个建议。这是更多的工作,但当涉及到内存管理时,您可以制作一个更有礼貌的iOS应用程序,而且您还可以针对更多的设备。
https://stackoverflow.com/questions/31151165
复制相似问题