为什么ProgressDialog并不总是在我的android应用程序中运行?

问题描述:

我已经做了一个图像下载线程从欲望网址下载图像。在那个线程上,我使用了一个进度对话框,但进度对话框在3或4秒后没有转动,看起来它被挂起。但后台工作是可以的。我的问题是,进度对话框没有变成什么?它看起来像什么? 我在开始位置使用此代码。为什么ProgressDialog并不总是在我的android应用程序中运行?

imageUploadhandler.postDelayed(runImageUpload, 500); 
     dialog = ProgressDialog.show(AllProductActivityPictGrid.this, "", 
       "Message...", true); 
     dialog.setCancelable(true); 
+0

你是什么意思转身? – 2012-07-27 06:20:57

+0

接受你以前的问题的答案.. – Ronnie 2012-07-27 06:44:33

尝试在下载完成后使用dialog.dismiss()。

请使用以下代码调用进度对话框。

ProgressDialog progressDialog = new ProgressDialog(context); 
    progressDialog.setMessage("Please Wait..."); 
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
    progressDialog.show(); 

    After completion of your task call progressDialog.dismiss(); 
+0

我完成作业后使用了dialog.dismiss()。完成这项工作后就完成了。但是我的问题是进度对话框在某些时候没有转动。 – TKumar 2012-07-27 06:34:37

+0

@TKumar请在我的帖子中找到更改并尝试使用它。 – Akshay 2012-07-27 06:40:12

你的对话框挂起,因为如果您的实例在HandlerActivity,然后你邮寄到Handler一切都将在UI线程上运行,而不是在后台线程。

做下载并在AsyncTask中创建ProgressDialog

也许你应该看看AsyncTask

protected void onPreExecute() { 
     progressDialog=ProgressDialog.show(context,"Please Wait..","Retrieving data from device",false); 
    } 


    @Override 
    protected String doInBackground(String... params) { 

    //background stuff here 

    return ""; 
} 

protected void onPostExecute(String result) { 

     progressDialog.dismiss(); 
     Toast.makeText(context, "Finished", Toast.LENGTH_LONG).show(); 

}