我想在後臺複製文件並每隔n秒更新一次進度。Android AsyncTask每秒複製並更新
現在,當新百分比大於先前百分比時,下面的代碼會更新進度。這對於小文件來說是分崩離析的,因爲它速度很快並且落後於UI線程。
所以我的問題是如何複製背景中的文件,但每n秒發佈一次進度。另外我怎樣才能計算它的複製速度?
的什麼,我試圖模仿是一個下載通知一個很好的例子,它顯示的速度,比例,並在〜2000毫秒間隔
這是我使用複製的代碼更新它們,在doInBackground()
方法
startTime = System.currentTimeMillis();
FileInputStream input = null;
FileOutputStream output = null;
totalMegaBytes = new File(source).length();
try {
input = new FileInputStream(source);
output = new FileOutputStream(dest);
byte [] buffer = new byte[8192];
int length;
while ((length = input.read(buffer)) > 0) {
total += length;
latestPercentDone = (int) ((total/(float) totalMegaBytes) * 100);
if (percentDone != latestPercentDone) {
percentDone = latestPercentDone;
publishProgress(""+percentDone);
}
output.write(buffer, 0, length);
}
//flush remaning information
output.flush();
//close stream
output.close();
input.close();
你一定要考慮的Rx對於這種或者問題,這將是很容易做到這一點:https://github.com/davidmoten/rxjava-file –