Dor*_*oro 13 android opengl-es
前言:此严重错误可导致Android设备锁定(无法按Home/Back按钮,需要硬重置).它与OpenGL表面和音频播放相关联.Logcat重复了一些效果
W/SharedBufferStack( 398): waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.
Run Code Online (Sandbox Code Playgroud)
每秒一次,因此这个错误的名称.造成这种情况的根本原因可能是缓冲数据时的死锁,无论是声音还是图形.
我在Asus EEE Transformer平板电脑上测试我的应用时偶尔会遇到这个错误.当声音线程MediaPlayer
使用填充对象MediaPlayer.create(context, R.raw.someid);
并且GLSurface
线程使用位图加载纹理时发生崩溃
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(),
R.drawable.textureMap,opts);
gl.glGenTextures(1, texAtlas, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texAtlas[0]);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
Run Code Online (Sandbox Code Playgroud)
我不认为原因是音频,因为音频实际上仍在播放(加载音频的线程然后在x时间后播放它).如果是这样,原因在于使用上述代码进行OpenGL ES缓冲.
相关材料
AudioTrack
对象.但是,我不在我的应用程序中使用它.共同元素
我的问题非常简单.这个问题有解决方法吗?如果你无法阻止它,有没有办法优雅地失败并防止整个设备被砖砌?
归档时间: |
|
查看次数: |
3350 次 |
最近记录: |