2

我有一个应用程序,当我ProgressBar在屏幕上显示 a 时它会冻结。当我增加 a 的大小ProgressBar或使用 aView而不是它时,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
4

2 回答 2

1

您可以并且应该使用 AsyncTask 来完成您希望在 UI 线程之外完成的事情。您将看到许多在 AsyncTask 的各种不同生命周期方法中显示和隐藏 ProgressDialog 的示例。

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

于 2013-01-14T14:58:13.890 回答
-1

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

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

于 2013-01-14T14:55:53.060 回答