我正在制作各种下载服务,它能够恢复以前的部分下载。我目前正在使用这样的跳过方法
long skipped = 0;
while (skipped < track.getCacheFile().length()){
skipped += is.skip(track.getCacheFile().length()-skipped);
}
我刚刚做了一个测试,在输入流中跳过 45 mb 大约需要 57 秒。我很好奇某些本机代码是如何做到这一点的,例如,媒体播放器可以立即搜索远程流的任何部分。我意识到我无法访问相同的库,但我可以实现类似的东西。
顺便说一句,那个测试是在wifi上的。在普通数据网络上,它显然要慢得多。
更新:非常简单(感谢下面)
if (track.getCacheFile().length() > 0){
request.setHeader("Range","bytes="+track.getCacheFile().length()+"-");
}