如何使用AsyncTask类更新复制文件另一个目录的进度?

Viv*_*ian 4 java android file android-asynctask progress-bar

嗨,大家可以告诉我,我应该如何使用AsyncTask类加上进度条来执行文件复制过程到手机SD卡本地上下文中的另一个目录?我已经看到了一个类似的例子[这里] [1],但我不知道如何结合差异/修改代码的上下文以适应我的上下文使其工作?

Ale*_*man 7

它会是这样的

// Params are input and output files, progress in Long size of 
// data transferred, Result is Boolean success.
public class MyTask extends AsyncTask<File,Long,Boolean> {
   ProgressDialog progress; 

  @Override
  protected void onPreExecute() {
    progress = ProgressDialog.show(ctx,"","Loading...",true);
  }

  @Override
  protected Boolean doInBackground(File... files) {
    copyFiles(files[0],files[1]);
    return true;
  }

  @Override
  protected void onPostExecute(Boolean success) {
    progress.dismiss();
    // Show dialog with result
  }

  @Override
  protected void onProgressUpdate(Long... values) {
    progress.setMessage("Transferred " + values[0] + " bytes");
  }
}
Run Code Online (Sandbox Code Playgroud)

现在,在copyFiles中,您必须调用带有传输数据大小的publishProgress().请注意,进度通用参数为Long.您可以使用commons-io中的CountingInputStream包装器.

还有很多额外的东西需要注意,但简而言之就是它.

开始:

  MyTask task = new MyTask();
  task.execute(src,dest);
Run Code Online (Sandbox Code Playgroud)