为什么我不能使用此活动查看ProgressDialog?

时间:2012-01-03 12:27:41

标签: android android-activity

我不能让我的ProgressDialog出现,我不知道为什么?

守则:

public class Activity001 extends Activity implements OnClickListener 
{
     public void onClick(View view) 
     { 
    ProgressDialog progressDialog = ProgressDialog.show(Activity001.this, "", "wait ", true, false);

                // Sending some files to server .. takes time .. -  (method that take 1-2 minutes ) 

    progressDialog.dismiss();

       } 
}

任何人都可以帮我一把吗?

2 个答案:

答案 0 :(得分:2)

试试这个。,

在onCreate()

中执行此操作
       Handler handler;
handler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        if (msg.what == 0) {
     Pdialog.dismiss();     


     }
   };

现在使用线程将文件上传到服务器。修改这段代码,

public class Activity001 extends Activity implements OnClickListener 
{
     public void onClick(View view) 
     { 
    ProgressDialog progressDialog = ProgressDialog.show(Activity001.this, "", "wait ", true, false);
Thread ProgressThread = new Thread() {
                @Override
                public void run() {
                    try {
                                // Sending some files to server .. take time .. -  (method that take 1-2 minuts ) 



                    } catch(InterruptedException e) {
                        // do nothing
                    } finally {

                             handler.sendEmptyMessage(0);
                    }
                }
            };

                ProgressThread.start();


       } 

}

修改

进度对话框是一个轻量级对象。它不优先于主线程中发生的其他任务。例如,当您调用进度对话框的show()后跟一个http进程或类似主线程中的进程时,它将不允许轻量级prgoress对话框优先。所以显然它只会出现在http进程的最后。

答案 1 :(得分:2)

相反,使用Thread实现后台任务的最佳方法是AsyncTask,也称为Painless Threading in Android

由于这被称为无痛线程,因此您无需关注线程管理。

根据您的要求,执行以下操作:

  1. 在onPreExecute()方法中,显示进度条或进度对话框
  2. 在doInBackground()方法中,执行文件发送任务
  3. 在onPostExecute()方法中,实现对话框解除任务。