Android 短时间睡眠

Android 短时间睡眠,android,multithreading,opengl-es,timer,sleep,Android,Multithreading,Opengl Es,Timer,Sleep,我正在尝试在OpenGL线程中限制FPS。为此,我在onDrawFrame中添加了睡眠。 不幸的是,睡眠时间少于12毫秒似乎根本无法入睡——FPS保持不变。只有当我使用高于12毫秒的值时,它才会真正休眠并降低FPS。Dalvik是否有一些技术上的限制,可以防止很短的睡眠时间 我尝试了Thread.sleep和SystemClock.sleep,结果相同。FPS不变并不一定意味着睡眠不起作用。如果渲染受GPU限制,则在CPU上添加短睡眠不会降低渲染速度。你到底想达到什么目的?Android通常将渲

我正在尝试在OpenGL线程中限制FPS。为此,我在onDrawFrame中添加了睡眠。 不幸的是,睡眠时间少于12毫秒似乎根本无法入睡——FPS保持不变。只有当我使用高于12毫秒的值时,它才会真正休眠并降低FPS。Dalvik是否有一些技术上的限制,可以防止很短的睡眠时间


我尝试了Thread.sleep和SystemClock.sleep,结果相同。

FPS不变并不一定意味着睡眠不起作用。如果渲染受GPU限制,则在CPU上添加短睡眠不会降低渲染速度。你到底想达到什么目的?Android通常将渲染速度限制在60 fps。你是想降低到每秒30帧吗?为了节省能源?是的,我尝试通过在onDrawFrame中花费33毫秒来将渲染速度降低到30 fps。理想情况下,您可以使用eglSwapInterval来实现此目的,但一些搜索表明,Android可能不支持此功能,或者至少不支持所有设备。这里有一个关于这个主题的相对较新的讨论,如果您没有看到的话:。对不起,我没有解决办法。我有一种感觉,应用程序中所有基于计时器的东西都不会一直工作。是的,我研究过eglSwapInterval,但因为surfaceflinger,它没有任何意义-Android的体系结构不允许直接渲染和控制vsync-它总是以最高60 fps的速度交换缓冲区。