【问题标题】:Binder thread, Progress Bar and OutOfResourcesExceptionsBinder 线程、进度条和 OutOfResourcesExceptions
【发布时间】:2011-07-22 20:06:56
【问题描述】:

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

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,以确保它没有保留任何内容。

有什么想法吗?

谢谢,

维瑞什

【问题讨论】:

    标签: android android-layout android-progressbar


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-06-21
          • 1970-01-01
          • 2014-01-06
          • 2020-10-29
          • 1970-01-01
          • 2011-07-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多