除了高内存使用情况外,哪些条件会导致操作系统关闭iOS应用程序?

时间:2012-03-27 22:04:56

标签: ios opengl-es remoteio

我的iPad应用程序存在令人沮丧的稳定性问题。在iPad 2上,该应用程序运行良好,没有崩溃,但在iPad 1上,它会随着内存使用率过高而关闭的同样关闭(应用程序停止在设备上运行,调试器更改为“暂停“状态,控制台窗口说”(gdb)“)。但是,内存分配低于5MB,所以我不知道应该做些什么来阻止操作系统关闭我。

我的应用程序使用OpenGLES和RemoteIO音频单元实时运行。所以它一直在处理,但在大量使用情况下不会发生崩溃。

如果不在调试器中运行,应用程序也会更加稳定。

除了高内存使用率之外,iOS是否会因任何原因关闭应用程序?我将如何调试这些原因以便我可以修复它们?

谢谢!

修改

我发现崩溃似乎与我用GL_LINE_STRIP绘制的顶点数量有关。我在屏幕上有多个对象,每个对象由一个带有2500个顶点的单行条组成。一旦我有~8个物体(总共约20,000个),稳定性变得狡猾。

另外,我正在混合线条。

有什么方法可以解决这个问题,而不只是放弃我的分辨率?

1 个答案:

答案 0 :(得分:0)

我发现的解决方案涉及两个部分:

1)我不时在OpenGLES视图上显示一些UIKit视图。每当显示这些视图时,停止所有OpenGLES渲染调用都有助于稳定。

2)每次拨打glFinish()时拨打glDrawArrays(GL_LINE_STRIP, ... )也有助于稳定。

将线条的alpha更改为1无效。

BOTTOM LINE :当OpenGLES存在(可能是硬件)问题时,您的应用可能会崩溃而没有堆栈跟踪或错误。

我的猜测是UIKit视图与OpenGLES视图的组合,或者带有大量索引的glDrawArrays调用会使图形“缓冲区”重载(参见后面的段落:http://www.songho.ca/opengl/gl_overview.html#flush