我一直在开发我的第一款 Android 游戏,但遇到了问题。 一群用户在加载纹理的阶段在他们的手机上报告了 ANR。 我有一堆 jpg 压缩纹理,在我的手机上解压大约需要 2 秒 并将它们加载到 opengl 中,在模拟器上需要半分钟才能完成,在这两种情况下我都没有收到 ANR,但我不断收到 ANR 报告。
我知道这是一项繁重的操作,可能会花费很多时间(> 5 秒)。 所以我需要知道一种正确的方法来完成所有这些冗长的加载(这不会在任何设备上导致 ANR)。
我使用了两种有助于在模拟器上有效避免 ANR 的方法(我用它来模拟慢速设备),但它们都不适合用户:
1) 在 onSurfaceCreated(...) 方法中执行所有加载。 2)将loading拆分成很多小的部分,一个一个的做 OnDrawFrame(...) 方法。
正确的做法是什么?
最佳答案
启动辅助线程以解压缩图像。确保将它们上传到您的主线程。
关于java - 加载 OpenGL 纹理的 Android 安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6286101/