java - 加载 OpenGL 纹理的 Android 安全方法

标签 java android opengl-es textures

我一直在开发我的第一款 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/

相关文章:

iphone - iPhone 上的 OpenGL ES 1.1 或 2.0

iphone - iPhone OpenGL ES 工具中的 Tiler Utilization 统计数据意味着什么?

java:jdwp会降低性能吗?

java - 像 getNames() 这样的 Netty ChannelPipeline 方法是否保证按 "proper"顺序给出结果?

java - 防止 Hibernate 关系表被审计

java - SOAP消息转换器

android - 如何在 Robolectric 2.2 中指定 custom/res 目录?

android - 以编程方式将按钮的宽度设置为 LinearLayout

android - 从 Activity A->B->C 导航 - 如何在 onBackPressed() 中将数据从 C 传递到 A?

opengl - OpenGL/OpenGLES 中的帧缓冲区纹理行为