Это было бы что-то вроде
// 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");
}
}
Теперь внутри copyFiles вам нужно будет вызвать publishProgress () с размером передаваемых данных, например. Обратите внимание, что универсальный параметр прогресса - Long. Для этого вы можете использовать оболочку CountingInputStream из commons-io.
Есть множество дополнительных вещей, о которых нужно позаботиться, но в двух словах:
Для начала:
MyTask task = new MyTask();
task.execute(src,dest);