我正在测试我的应用程序。这是我的方案
1)从我的工作线程中我显示了一个进度条(我将消息传递给在ui上创建的处理程序)。我等待我的工作线程,直到调用pd.show(),然后我恢复我的工作线程
2)对工作线程执行操作
3)取消进度对话框。我再次将消息传递给在ui上创建的处理程序并等待工作线程直到调用pd.dismiss
为了进行压力测试,我已将其置于10000次迭代循环中。在我的Nexus上,一切都很好。在Galaxy选项卡和所有motorola设备上,经过大约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
答案 0 :(得分:0)
也许你没有足够的记忆来创造更多的表面!
答案 1 :(得分:0)
在我的情况下,我有一个产生95个对话框的错误,它们是进度条指示器的表兄弟。所以,这导致了我的资源异常
答案 2 :(得分:0)
尝试禁用此活动的hw渲染。
如果由硬件加速引起异常,它可能会有所帮助。
我最近在我们的应用程序中修复了类似的问题。
但要解决这个问题的原因可能真的很难。 :(