Anroid DownloadManager修改更新间隔如何



我尝试使用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 DownloadManager进度

我也应用了问题的答案,但没有得到更新的值。

我也遇到了同样的问题,我所做的是调用这个方法,每当COLUMN_BYTES_DOWNLOADED_SO_FAR发生变化时都会设置ValueAnimator,使其看起来平滑

private fun updateProgressBar(progress: Int){
runOnUiThread {
val progressAnimator = ValueAnimator.ofFloat(pb_download_video.progress.toFloat(), progress.toFloat())
progressAnimator.duration = 300
progressAnimator.addUpdateListener {
val value: Int = (it.animatedValue as Float).toInt()
binding.pbDownloadVideo.progress = value
}
progressAnimator.doOnEnd { if (progress == 100) // action when is done loading }
progressAnimator.start()
}
}

最新更新