当密集计算在后台时,ProgressDialog圆停止旋转

时间:2012-01-05 09:38:50

标签: android android-widget

我需要有关ProgressDialog的建议,我会显示像

这样的对话框
            pd = ProgressDialog.show(
                    Dashboard.this,
                    "LOADING...",
                    "PLEASE WAIT", true, false);

它显示,但它在背景中是密集计算,圆停止旋转(就像它被阻止)。我在onClick按钮上面运行上面的代码。要改变什么以避免这种阻塞或者这是不可能的?

2 个答案:

答案 0 :(得分:1)

您必须将密集计算移至另一个线程,以便不阻止UI线程

请参阅另一个SO问题,例如如何一起使用AsyncTaskProgressDialog

progressDialog in AsyncTask

答案 1 :(得分:1)

当你说你的进度对话框没有旋转时,它实际上意味着你的密集计算阻塞了主/ UI线程

你应该使用Asynctask

还要抓住painless threading in android

它将在后台运行而不会在UI线程中造成打嗝......

由于Android应用程序在单个主(UI)线程上运行,因此您应该避免在UI线程上执行繁重的任务

asynctask基本上是一个由android系统提供的智能工作线程。它包含帮助方法,你可以轻松地决定你想做什么

应在onPreExecute()中创建进度对话框,并在onPostExecute()

中解除

在doInBackgound()

中执行密集型任务

以下是一些教程:

easy to understand asynctask