Многократное чтение из InputStream с различной скоростью - PullRequest
2 голосов
/ 09 октября 2009

Я собираюсь загрузить онлайн-контент (скажем, аудиофайл). Если я просто открываю соединение с удаленным файлом (например, с помощью new URL().openStream()) и передаю удаленный InputStream на аудиоплеер, он читает постепенно из сети , Если библиотека аудиопроигрывателя не запрашивает InputStream дополнительные данные, она ничего не читает из сети, а затем, когда библиотека запрашивает больше, она читает снова.

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

Существует ли какой-либо тип кэширования InputStream, который также допускает одновременное чтение? Затем я могу запустить поток и кэшировать звук быстрее, чем аудиоплеер потребляет данные.

1 Ответ

2 голосов
/ 09 октября 2009

Я бы порекомендовал вам создать второй поток для выполнения загрузки. Загружайте файлы как можно быстрее в этой теме и передавайте данные в основной поток воспроизведения.

...