首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android "cpu可能是固定的“错误

Android "cpu可能是固定的“错误
EN

Stack Overflow用户
提问于 2011-12-10 17:25:11
回答 1查看 3.4K关注 0票数 13

前言:这个严重的错误会导致Android设备被锁定(无法按下Home/Back按钮,需要硬复位)。它与OpenGL曲面和音频回放相关联。Logcat重复某件事情,以达到

代码语言:javascript
复制
W/SharedBufferStack( 398): waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.

每秒钟一次,因此这个错误的名字。造成这种情况的根本原因可能是缓冲数据(无论是声音还是图形)时出现死锁。

在华硕EEE变压器平板电脑上测试我的应用程序时,我偶尔会遇到这个错误。当声音线程使用MediaPlayer填充MediaPlayer.create(context, R.raw.someid);对象,而GLSurface线程使用位图加载纹理时,就会发生崩溃。

代码语言:javascript
复制
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();

我不认为原因是音频,因为音频实际上仍然播放(加载音频的线程,然后在x时间后播放它)。如果是这样的话,原因在于使用上述代码的OpenGL ES缓冲。

相关材料

  • 这是如此的帖子指的是这个bug。他们使用OpenGL ES2.0和NDK。我使用OpenGL es1.1(尽管大多数设备模仿1.1到2.0,所以从技术上说它们使用的是2.0),而我不使用NDK。此外,他们使用Android2.1,我的崩溃发生在Android3.2.1上。
  • 本站将bug链接到AudioTrack对象。然而,我没有在我的应用程序中使用这个。
  • Android Bug跟踪器将其作为已知的bug列出,但到目前为止还没有解决方案(而且在Honeycomb+中也没有修复)。

公共元素

  • 缓冲时发生冻结。缓冲的东西通常是相当大的,所以图像(错误发生的频率越高)或音频通常会受到影响。
  • 只有在某些设备上才会发生冻结。
  • 冻结与特定的Android版本无关--已经记录在2.1和3.2.1等版本上。
  • 冻结与NDK的使用无关。
  • 冻结与单个编程实践(缓冲顺序、文件类型等)无关。

我的问题很简单。这个问题有什么解决办法吗?如果你不能阻止它,是否有一种方法来优雅地失败,防止整个设备被砖?

EN

回答 1

Stack Overflow用户

发布于 2012-03-16 06:45:45

增加设备的虚拟内存会降低发生此问题的次数。当然,这不是一个选项,除非您是设备的制造商。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8458404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档