我正在对应用程序进行压力测试。这是我的场景
1)从我的工作线程,我显示了一个进度条(我正在传递一个消息到在ui上创建的处理程序)。我在工作线程上等待,直到pd.show()被调用,然后恢复工作线程
2)在工作线程上执行一个操作
3)取消进度对话框。同样,我将消息传递给在ui上创建的处理程序,并等待工作线程直到pd。叫做
为了进行压力测试,我将其放入10000次迭代循环中。在我的Nexus one上,一切都运行得很好。在galaxy tab和所有摩托罗拉设备上,经过大约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,以确保它没有抓住任何东西。
任何想法?
谢谢,
Veeresh
也许你没有足够的内存来创造更多的表面!
在我的例子中,我有一个可能产生95个对话框的bug,这是进度条指示器的表兄弟。因此,这导致了我的out of resources异常
尝试禁用此活动的hw渲染。
可以帮助解决HW加速导致的异常。
我最近在我们的应用程序中修复了类似的问题。
但是要解决这个问题的原因可能真的很难。(