Java 计算估计的剩余下载时间

Java 计算估计的剩余下载时间,java,android,Java,Android,我有一个从URL下载文件的代码。 我有两个参数,可以随时计算下载: Long start = System.nanoTime(); // downloading... Long end = System.nanoTime(); 我需要测量到下载结束的估计剩余时间。我怎么能做到呢?很简单,对不起,占用了你的时间。 对于未来的搜索者: 开始下载保存时间戳时: Long startTime = System.nanoTime(); 要计算平均剩余速度,请执行以下操作: Long elapsedT

我有一个从URL下载文件的代码。
我有两个参数,可以随时计算下载:

Long start = System.nanoTime();
// downloading...
Long end = System.nanoTime();

我需要测量到下载结束的估计剩余时间。我怎么能做到呢?

很简单,对不起,占用了你的时间。

对于未来的搜索者:

开始下载保存时间戳时:

Long startTime = System.nanoTime();
要计算平均剩余速度,请执行以下操作:

 Long elapsedTime = System.nanoTime() - startTime;
 Long allTimeForDownloading = (elapsedTime * allBytes / downloadedBytes);
 Long remainingTime = allTimeForDownloading - elapsedTime;

取总大小,减去已经下载的数据量,再除以平均下载速度(您需要捕获时间和进度)。在速度不变的情况下,您只剩下下载该文件所需的时间(以秒为单位)。您需要通过每隔几秒获取一个时间戳来计算当前下载速度。这样想:如果10秒过去了,我下载了50%的文件,如果速度不变,需要多少秒?@GiantTree你真的应该回答这个问题。只需说:“@GiantTree是正确的,@Kristy Welsh也是正确的,@GiantTree是正确的,”
System.nanoTime()
,你需要在
onProgress()中的特定时间间隔计算剩余时间(正如@GiantTree所解释的),并将其报告给你的UIA。我可以建议你做一个移动平均,而不是整体平均吗?比如,看看5秒钟内下载了多少数据,然后根据这个速率进行估算。