我不确定可以做些什么。我的应用程序是一个iPad应用程序,我使用约300MB的内存。在任何给定时间,游戏都会加载大约250MB的纹理。
这是问题所在。当我睡觉我的iPad时,如果我睡了几分钟并返回我的游戏,它会在几秒钟内再次播放。如果我在玩完游戏后让我的iPad休息,或者我的游戏仍然运行了大约1天,那么我回去,我的游戏需要大约3.5分钟才能恢复。这不是一个错误,我已经多次查看调试器,一切都按预期工作。 iOS必须从某个地方恢复堆,这比从头开始加载游戏需要大约10倍。
我目前的解决方案是忘记恢复,我故意使我的应用程序崩溃,以便它在离开后重新启动,这使我进入同一状态大约快10倍。但我不喜欢这个解决方案。
还有其他人遇到过这样的问题吗?在睡了几个小时后,我应该打电话或者降低恢复时间吗?这个问题是在任何地方记录的吗?
答案 0 :(得分:1)
我目前的解决方案是忘记恢复和故意 崩溃我的应用程序,所以它在它离开后重新启动它得到 我到同一个州约快10倍。但我不喜欢这个 溶液
这是确保您的应用未获批准在App Store上发布的有保证的方法。这个问题有两个解决方案:
1)重新设计游戏。有各种各样的技术,包括:
将级别分解为更小的部分,因此每个阶段都需要更少的资产来加载。
缩小纹理和资产。例如,使用256x256纹理而不是512x512。一个512x512纹理占用了四个256x256纹理的空间。你想在几秒钟内加载一个场景中的四个纹理,还是1?
压缩纹理。压缩纹理比未压缩的纹理更小,加载更快。
你的应用程序甚至不会在原装的iPad Mini上运行,因为它的RAM - 它有512MB,你现在正试图在任何给定的时间使用300MB。
2)禁止您的应用停留在后台。
每当你的应用程序失去焦点时(除了锁定屏幕被切换),它还会强制自己从头开始重新加载...就像你现在已经在做强迫崩溃一样。参见:
如果您不想让您的应用进入后台设置了 应用程序的Info.plist文件中的UIApplicationExitsOnSuspend键 是的
How to exit app while enter background
这些是我的建议,尽管如此,如果可能的话,我会做第一个。这是更多的工作,但是你可以在内存管理方面做出更有礼貌的iOS应用程序 plus 你可以定位更多的设备。