我的应用程序的恢复时间很长

Very long restore time on my App

我不确定对此可以做些什么。我的应用程序是一个 iPad 应用程序,我使用了大约 300MB 的内存。在任何给定时间都为游戏加载了大约 250MB 的纹理。

问题来了。当我让我的 iPad 休眠时,如果我让它休眠几分钟,然后 return 进入我的游戏,它会在几秒钟内再次播放。如果我在玩完我的游戏后让我的 iPad 睡觉,或者我的游戏仍然 运行 大约 1 天然后我回去,我的游戏需要大约 3.5 分钟才能恢复。这不是错误,我已经多次查看调试器,一切都按预期工作。 iOS 一定是从某个地方恢复堆,这比从头开始加载游戏所花的时间大约长 10 倍。

我目前的解决方案是忘记恢复,我故意让我的应用程序崩溃,以便它在离开后自行重启,这让我以大约 10 倍的速度恢复到相同状态。但我不喜欢这个解决方案。

有没有其他人遇到过这样的问题?在 iPad 睡眠几个小时后,是否有 api 我应该打电话或缩短恢复时间的东西?是否在任何地方记录了此问题?

My current solution is to forget about restoring and I intentionally crash my app so it restarts itself after it has been away which gets me to the same state about 10 times faster. But I don't like this solution.

这是确保您的应用程序未获准在 App Store 上分发的有保证的方法。这个问题有两个解决方案:

1) 重新设计您的游戏。对此有多种技术,包括:

将关卡分解成更小的部分,因此每个阶段需要加载的资产更少。

缩小纹理和资产。例如,使用 256x256 纹理而不是 512x512。一张 512x512 的纹理占用了四张 256x256 纹理的 space。您愿意在几秒钟内在一个场景中加载 4 个纹理,还是 1 个?

压缩你的纹理。压缩的纹理比未压缩的兄弟更小,加载速度更快。

您的应用程序甚至不会 运行 在原始 iPad Mini 上运行,因为它是 RAM - 它有 512MB,而您目前正在尝试在任何给定时间使用 300MB。

2) 禁止您的应用程序在后台运行。

每次您的应用程序失去焦点(除了锁定屏幕被切换),它会强制自己从头开始重新加载...就像您现在已经在强制崩溃时所做的那样。参见:

If you never want your app to enter the background set the UIApplicationExitsOnSuspend key in your application’s Info.plist file to YES

How to exit app while enter background

这些是我的建议,但老实说,如果可能的话,我会做第一个。这是更多的工作,但在内存管理方面,您可以制作更礼貌的 iOS 应用程序 加上 您可以针对更多设备。