2

我正在对我的应用程序进行压力测试。这是我的场景

1)从我的工作线程中,我显示了一个进度条(我正在将消息传递给在 ui 上创建的处理程序)。我在我的工作线程上等待,直到调用 pd.show(),然后我恢复我的工作线程

2)对工作线程执行操作

3)关闭进度对话框。同样,我将消息传递给在 ui 上创建的处理程序并等待工作线程,直到调用 pd.dismiss

为了进行压力测试,我将其放入 10000 次迭代循环中。在我的 Nexus 上一切正常。在银河选项卡和所有摩托罗拉设备上,经过大约 50 次左右的迭代,我的应用程序被强制关闭。我看到 BinderThreads 慢慢增长到 16 并停止增长(我知道 16 是 BinderThreads 的最大限制)。在 Nexus One 上,这些会导致以后出现任何问题。我在galaxy tab和moto设备的logcat中得到了这个

 W/WindowManager( 1363): OutOfResourcesException creating surface
 I/WindowManager( 1363): Out of memory for surface!  Looking for leaks...
 W/WindowManager( 1363): No leaked surfaces; killing applicatons!

编辑:关闭进度对话框后,我将其设置为 null,以确保它没有保留任何内容。

有任何想法吗?

谢谢,

韦雷什

4

3 回答 3

0

就我而言,我有一个错误,它产生了大约 95 个对话框,它们是进度条指示器的表亲。所以,这导致了我的资源不足异常

于 2012-08-30T18:56:19.453 回答
0

尝试为此活动禁用硬件渲染。

如果硬件加速导致异常,它可能会有所帮助。

我最近在我们的应用程序中解决了类似的问题。

但是要解决这个问题的原因可能真的很难。:(

于 2013-11-06T10:30:10.270 回答
0

也许你没有足够的内存来创建更多的表面!

于 2011-07-22T20:25:32.563 回答