我有一个 iPad 应用程序,它有一个下载大量地图文件(几千兆数据和数十万个文件)的过程。
在我最近的测试版本中,设备有时会在下载过程中重新启动(下载可能需要几个小时)。
当应用程序重新启动时,它不会留下崩溃报告。我们在运行 4.3.3 的 iPad 1 和 iPad 2 上观察到了这种行为。
我唯一能想到的是我们将执行这些下载的最大并发线程从 4 个增加到 20 个。
完全耗尽系统内存会触发设备硬重启。这在 iPhone OS 2.0 中更为常见,运行在最初的 iPhone 和 iPod touch 的有限硬件上。在最近的操作系统版本中,当应用程序超过其内存上限时,Apple 更加严格地强制执行硬终止,因此做到这一点变得更加困难。此外,这些设备的内存比以前多得多。
有时可以执行此操作的一种方法是加载许多大型纹理或其他图形组件,这些组件可能不会立即被识别为应用程序使用的内存。在紧密循环中将一堆数据加载到 GPU 上时,我能够导致系统重新启动。您可能在这里遇到类似的情况。
我怀疑这与您所拥有的活动线程的数量有关,尽管它们可能使您在系统杀死您的应用程序之前更容易将一堆数据转储到内存中。
顺便说一句,您是否考虑过使用 GCD 或像 ASIHTTPRequest 这样基于队列的框架,而不是使用大量消耗资源的线程?这些可能对您的应用程序更有效,但仍然提供您所需的并发性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)