Я делаю что-то вроде загрузки, и у нее есть возможность возобновить предыдущую частичную загрузку. В настоящее время я использую метод пропуска, как это
long skipped = 0;
while (skipped < track.getCacheFile().length()){
skipped += is.skip(track.getCacheFile().length()-skipped);
}
Я только что провел тест, и мне потребовалось около 57 секунд, чтобы пропустить 45 Мб во входном потоке. Мне любопытно, как определенный нативный код делает это, например, медиаплеер может мгновенно искать любую часть удаленного потока. Я понимаю, что у меня нет доступа к тем же библиотекам, но могу ли я достичь чего-то похожего.
Кстати, этот тест был на Wi-Fi. Это очевидно намного медленнее в обычных сетях передачи данных.
Обновление: очень просто (спасибо ниже)
if (track.getCacheFile().length() > 0){
request.setHeader("Range","bytes="+track.getCacheFile().length()+"-");
}