ProgressDialog在执行任务时未显示

我有一个备份例程,可以将从一个文件夹到外部SD卡的所有内容复制完美。 我正在尝试一个很好的popup对话框,显示它正在运行但它没有显示。 甚至没有尝试运行(但备份确实完成)。

这是我目前的代码:

public void doBackup(View view) throws IOException{ ProgressDialog pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); pd.setMessage("Running backup. Do not unplug drive"); pd.setIndeterminate(true); pd.setCancelable(false); pd.show(); File source = new File("/mnt/extSdCard/DirectEnquiries"); File dest = new File("/mnt/UsbDriveA/Backup"); copyDirectory(source, dest); pd.dismiss(); } 

  • 如何使用ProgressDialog显示方向更改?
  • 当Android对话框被解散时,你可以触发一个事件吗?
  • 为什么ProgressDialog的背景没有设置为透明?
  • 在Android中的ProgressDialog / AlertDialog上禁用背景调暗
  • 带有ProgressDialog和Progress Bar的AsyncTask
  • 在Android中禁用ProgressDialog / AlertDialog上的背景昏暗
  • 在Fragment类中显示ProgressDialog
  • Android的AsynTask与进度对话框取消
  • 您在ThreadAsyncTask运行长时间运行的任务。 然后你的ProgressDialog会出现。

    做类似的事情:

     public void doBackup(View view) throws IOException{ final ProgressDialog pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); pd.setMessage("Running backup. Do not unplug drive"); pd.setIndeterminate(true); pd.setCancelable(false); pd.show(); Thread mThread = new Thread() { @Override public void run() { File source = new File("/mnt/extSdCard/DirectEnquiries"); File dest = new File("/mnt/UsbDriveA/Backup"); copyDirectory(source, dest); pd.dismiss(); } }; mThread.start(); } 

    创建一个asyntask并完成耗时的任务

      public void doBackup(View view) throws IOException{ ProgressDialog pd = new ProgressDialog(this); pd.setProgressStyle(ProgressDialog.STYLE_SPINNER); pd.setMessage("Running backup. Do not unplug drive"); pd.setIndeterminate(true); pd.setCancelable(false); pd.show(); //create asyntask here //Put below code in doInBackground mathod File source = new File("/mnt/extSdCard/DirectEnquiries"); File dest = new File("/mnt/UsbDriveA/Backup"); copyDirectory(source, dest); //put this code in onPostExecute Method. pd.dismiss(); } 

    您将获得Asyntask的样本数量。

    而不是一次在一个function中执行此操作。 执行以下步骤,它肯定会为您工作。 1.创建一个异步类。(它将为您的复制目录function创建一个单独的线程,并且不会在主UI上运行。)2。在执行异步类之前显示您的进度对话框。 3.在后执行方法上,关闭对话框。