2011-06-08 55 views
2

我一直在为Android开发我的第一款游戏,并且遇到了问题。 一堆用户在加载纹理的阶段在手机上报告了ANR。 我有一堆jpg压缩纹理,在我的手机上需要大约2秒来解压 并将它们加载到opengl中,而在仿真器上它需要半分钟的时间才能完成,而且在任何情况下都不会收到ANR ,但我仍然得到ANR报告。Android安全的加载OpenGL纹理的方法

我知道这是一项沉重的操作,需要花费很多时间(> 5秒)。 所以我需要知道一个正确的方式来做所有冗长的加载(这不会导致任何设备上的ANR)。

我用了两种方法,有助于有效地避免对仿真器(我用它来慢速设备型号)ANR,但他们都不适用于用户:

1)不要在onSurfaceCreated所有加载(... ) 方法。 2)将加载分成许多小部分,然后在 OnDrawFrame(...)方法中逐个加载。

什么是正确的方法来做到这一点?

回答

2

启动一个辅助线程来解压缩图像。确保将它们上载到主线程中。