我有一个应用程序,当我在屏幕上显示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
答案 0 :(得分:1)
你可以而且应该使用AsyncTask来完成你想要在UI线程上完成的事情。您将看到许多示例,其中显示ProgressDialog并将其隐藏在AsyncTask的各种不同生命周期方法中。
以下是一个很好的例子(有许多例子):Android AsyncTask Progress bar
答案 1 :(得分:-1)
您应该使用另一个线程进行计算,您需要在ui线程中更新进度条。你需要一个引擎和ui线程之间的共享变量,它将由引擎线程刷新,ui线程应定期检查更改。
或者,您可以将进度条的对象传递给引擎线程,该线程可以调用方法来更新进度条的状态。