我正在将我的游戏从 iOS 移植到 Android。大多数情况下,它工作得很好。我主要使用 C/C++ 代码、NDK/JNI 和一点 Java 来管理应用程序生命周期并将触摸和加速度计信息发送到我的游戏。
据我所知,有 2 个线程,主 UI 线程和一个由 GLSurfaceView 创建的线程,用于处理显示和翻转 OpenGL 后台缓冲区等。
因此,除了触摸之外,一切都运行良好。与我在设备上尝试过的其他应用程序相比,它们感觉迟缓且反应迟钝。在做了一些研究之后,我相信这个问题可能与我如何使用线程有关。具体来说,我认为,这可能与显示线程在工作后不休眠有关,因此,它在主 UI 线程上进行了处理。这听起来合理吗?
我尝试计算我需要多少毫秒 GLSurfaceView 显示线程休眠,然后休眠(),它改善了触摸,但我的设备上的动画不再是恒定的 60FPS。我的怀疑是我正在计算前一帧休眠的毫秒数,并使用该数字休眠当前帧。
或者,它可能是完全不同的东西?我不知道。我对Android还是很陌生...
希望有人能对此事有所了解,或指出我正确的方向。
谢谢,