- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
前言:这个严重的错误会导致 Android 设备锁定(无法按 Home/Back 按钮,需要硬重置)。它与 OpenGL 表面和音频播放相关联。 Logcat 重复了一些内容,效果如下:
W/SharedBufferStack( 398): waitForCondition(LockCondition) timed out (identity=9, status=0). CPU may be pegged. trying again.
每秒一次,因此是此错误的名称。造成这种情况的根本原因可能是缓冲数据(无论是声音还是图形)时出现死锁。
在 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();
我认为原因不是音频,因为音频实际上仍在播放(加载音频的线程然后在 x 时间后播放)。如果是,则原因在于使用上述代码的 OpenGL ES 缓冲。
相关资料
AudioTrack
目的。但是,我不会在我的应用程序中使用它。通用元素
我的问题很简单。这个问题有解决方法吗?如果不能阻止,有没有办法优雅地失败,防止整个设备变砖?
最佳答案
就我的游戏而言,“waitForCondition”问题已在 Samsung Galaxy S (Android 2.3.3) 上被发现。当然我不知道这个问题是否已经在不同的设备上被注意到,但可能那里也存在问题。幸运的是,我能够重现它,因为我的一个 friend 得到了这个设备,他很友好地借给我一个一周。在我的例子中,游戏几乎都是用 Java 编写的(很少通过 NDK 调用 OpenGL 函数),所以我不确定这是否也适用于您的问题。
无论如何,问题似乎与 OpenGL 内部缓冲区有关。在下面显示的代码中,被注释掉的行 (1) 已更改为 (2) - 手动配置选择。我还没有对它进行彻底的测试,但是自从那个变化我没有注意到任何卡住,所以有希望..
更新 1: 作为附加信息,我想我在某处读到有人在他的 CPU 上遇到了同样的问题,他的解决方案是将所有 OpenGL Surface 组件设置为 8 位(alpha 组件也是如此) ) 而不是 565 或 4 位(我不记得到底是什么错误配置)
更新 2: 也可以考虑使用 EGLConfigChooser 的以下实现:GdxEglConfigChooser.java .如果这最终没有帮助,请使用 GLSurfaceView20.java 中介绍的方法.
更新 3:此外,尽可能简化程序着色器也有一点帮助。
// in Activity...
glView = new GLSurfaceView(this);
glView.setEGLContextClientVersion(2); // OpenGL ES 2.0
// glView.setEGLConfigChooser(false); // (1) false - no depth buffer
glView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
glView.setEGLConfigChooser(8,8,8,8,0,0); // (2) TODO: crashes on devices which doesn't support this particular configuration
glView.setRenderer(new MyRenderer(this));
关于Android "cpu may be pegged"漏洞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8458404/
使用语法 start = b / a a = "4" "2" b = "4" 与 peg.js识别 4 但不识别 42 在这种情况下错误 “第 1 行,第 2 列:预期的输入结束,但找
我试图了解如何使用 PEG.js 在文本中进行简单的搜索/替换。当然,这不是解析器的预期用途,但无论如何我对这些语言背后的逻辑感到好奇,以产生一些搜索/替换。 我遇到的问题是很难积极定义某些定义的互补
扩展我之前的帖子,我还在写汉诺塔。在解释了如何在钉子上画环的绝妙解决方案之后,我仍然有一个问题,我已经摆弄了很长一段时间了。 这是我的 PegClass: namespace Towers_Of_Ha
我最近遇到了 PEG 解析器和 Guido van Rossum 的 article on PEG parsers以及如何构建它们。那篇文章讨论了“PEG”解析器,但在内部它看起来就像一个递归下降解析
我的同事 PaulS 问了我以下问题: 我正在为现有语言(SystemVerilog - IEEE 标准)编写一个解析器,并且该规范中有一条结构与此类似的规则: cover_point =
我写了一个 PEG 解析器生成器只是为了好玩(有时间我会在 NPM 上发布它),并认为在它上面添加一个随机短语生成器会很容易。这个想法是在给定语法的情况下自动获得正确的短语。所以我设置了以下规则来从每
我很喜欢使用 YARD: http://www.ootl.org/yard/ http://code.google.com/p/yardparser/ http://www.codeproject.c
我正在使用 rust-peg 实现类似 OCaml 的语言我的解析器有一个错误。 我定义了 if 语句语法,但它不起作用。 我猜测试用例输入被解析为 Apply(Apply(Apply(Apply(f
我想使用 Peg.js 来解析和验证我一直在使用正则表达式所做的事情,但我正在努力解决语法问题。 我的 Peg.js 程序是: start = (var / other) cr d:var {retu
我正在尝试使用pegjs创建一个解析器。我需要解析类似的内容: blah blah START Lorem ipsum dolor sit amet, consectetur adipiscing e
我目前正在编写PEG.js语法,并且希望它输出自定义错误。例如,我目前具有用于创建函数的这种结构。 //Function Declaration FUNCTION_DECLARATION = FUNC
我当前遇到的问题是我的代码无法解决钉子纸牌的不同变体。我的测试程序测试了 4 个简单的可解板。 (1步解法)上一步、下一步、左一步、右一步。我的代码毫无问题地解决了这些问题,并测试了无法解决的板。我遇
使用 https://github.com/JetBrains/Grammar-Kit如何不用左递归重写文法? grammar ::= exprs exprs::= (sum_expr (';')?)
我正在尝试解析逗号分隔的列表。为了简单起见,我只使用数字。这些表达式是有效的: (1,4,3) () (4) 我可以想到两种方法来做到这一点,我想知道为什么失败的例子不起作用。我相信它是正确的 BNF
我将如何在 Treetop 中做这样的事情? /.+?;/ 似乎唯一的方法是这样做: [^;]+ ';' 哪个有点丑......还有其他方式吗? .+? 似乎不起作用.. 最佳答案 默认情况下 PEG
我在定义允许两个标签(包括那些标签)之间的任何文本的表达式时遇到问题。 例子: #ifdef asdasdasdasdasdsasd asdasdasdasdasdasdasd asdasdasda
我有以下 peg.js 脚本: start = name* name = '** name ' var ws 'var:' vr:var ws 'len:' n:num? ws 'label:' lb
我正在尝试创建一个钉跳拼图,并且正在执行格式说明符,我意识到算法尚未完成,但有人可以解释为什么我的条件被忽略吗?即使列不止一列,它也会运行格式规范。例如,在钉跳益智游戏中,第一行之后的每一行的每个“+
我在 PEG.js 和匹配单词方面遇到问题。 它看起来像这样:Words = "stack"/"overflow"/"stackoverflow" - 当我尝试匹配“stackoverflow”时,它
编辑:您可以在此处关注进度:https://github.com/simple-updates/template 我正在使用 peg.js并尝试编写一些可以解释模板的东西,例如: hello {{ "
我是一名优秀的程序员,十分优秀!