Я попытался получить файл с сервера с помощью Android downloadManager и подтвердил, что он работает правильно.
но значение COLUMN_BYTES_DOWNLOADED_SO_FAR меняется примерно каждые 1-2 секунды, поэтому полоса программы плавно не увеличивается. Есть ли способ изменить интервал обновления?
boolean downloading = true;
int oldProgressValue = 0;
int lastProgressValue = 0;
long startTime = System.currentTimeMillis();
try {
while (downloading) {
DownloadManager.Query q = new DownloadManager.Query();
q.setFilterById(downloadId);
Cursor cursor = downloadManager.query(q);
cursor.moveToFirst();
int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
cursor.moveToFirst();
int bytes_downloaded = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
if (cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS)) == DownloadManager.STATUS_SUCCESSFUL) {
downloading = false;
}
//0 ~ 100
lastProgressValue = (int) ((bytes_downloaded * 100l) / bytes_total);
Thread.sleep(50);
if (timeOut > 0) {
downloading = UpdateTimeOut(startTime, oldProgressValue, lastProgressValue);
}
if (oldProgressValue != lastProgressValue) {
oldProgressValue = lastProgressValue;
int finalOldProgressValue = oldProgressValue;
runOnUiThread(new Runnable() {
@Override
public void run() {
textView.setText(String.valueOf(finalOldProgressValue));
}
});
}
cursor.close();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
}
Дополнительно
Android Диспетчер загрузок с диалогом прогресса
Тот же вопрос и я попробовал как ответ, но он не решил.
Android DownloadManager Progress
Я также применил ответ на вопрос, но не получил обновленное значение .