Я собираюсь загрузить онлайн-контент (скажем, аудиофайл). Если я просто открываю соединение с удаленным файлом (например, с помощью new URL().openStream()
) и передаю удаленный InputStream
на аудиоплеер, он читает постепенно из сети , Если библиотека аудиопроигрывателя не запрашивает InputStream
дополнительные данные, она ничего не читает из сети, а затем, когда библиотека запрашивает больше, она читает снова.
Моя проблема заключается в том, что я хочу начать кэширование следующего онлайн-аудиофайла, как только завершится процесс загрузки первого. При обычном InputStream
чтение завершается, когда завершается воспроизведение звука, что не очень хорошо, поскольку я хочу, чтобы оно читалось быстрее, если позволяет пропускная способность сети, чтобы кэшировать следующий аудиофайл. Мои аудиофайлы меньше 3 МБ, поэтому их можно безопасно сохранить в памяти. Я предпочитаю только один файл, поэтому нет проблем с утечкой памяти.
Существует ли какой-либо тип кэширования InputStream
, который также допускает одновременное чтение? Затем я могу запустить поток и кэшировать звук быстрее, чем аудиоплеер потребляет данные.