ProgressBar和整个应用程序冻结

时间:2013-01-14 14:47:31

标签: android android-progressbar ui-thread

我有一个应用程序,当我在屏幕上显示ProgressBar时,它会冻结。当我增加ProgressBar的尺寸或使用View代替ProgressBar时,它不会冻结。

冻结LogCat日志时:

D/OpenGLRenderer(13909): GL Error after OpenGLRenderer::setupDrawMesh-   glVertexAttribPointer OpenGLRenderer: 1285
D/OpenGLRenderer(13909): GL Error after OpenGLRenderer::setupDrawMesh-   glVertexAttribPointer OpenGLRenderer: 1285
D/OpenGLRenderer(13909): GL Error after OpenGLRenderer::drawTextureMesh()-   glDrawArrays OpenGLRenderer: 1285
D/OpenGLRenderer(13909): GL Error after OpenGLRenderer::setupDrawMesh- glDisableVertexAttribArray OpenGLRenderer: 1285

2 个答案:

答案 0 :(得分:1)

你可以而且应该使用AsyncTask来完成你想要在UI线程上完成的事情。您将看到许多示例,其中显示ProgressDialog并将其隐藏在AsyncTask的各种不同生命周期方法中。

以下是一个很好的例子(有许多例子):Android AsyncTask Progress bar

答案 1 :(得分:-1)

您应该使用另一个线程进行计算,您需要在ui线程中更新进度条。你需要一个引擎和ui线程之间的共享变量,它将由引擎线程刷新,ui线程应定期检查更改。

或者,您可以将进度条的对象传递给引擎线程,该线程可以调用方法来更新进度条的状态。