2015-09-27 5 views
0

Я загружаю видео, используя OkHttp в своем приложении. Чтобы воспроизвести видео, мне нужно загрузить его полностью, а затем воспроизвести его с помощью объекта File.Как получить объект File из тела ответа в OkHttp?

Я не смог найти хороший способ получить объект File из базового DiskLruCache в OkHttp. Прямо сейчас я использую InputStream тела ответа, чтобы передать ответ в другой DiskLruCache, чтобы получить объект File и воспроизвести его.

Я думаю, что неплохо иметь несколько DiskLruCaches. Есть ли хороший способ получить объект File из кэшированного ответа в OkHttp?

+0

Почему кэш это, вы можете не экономить на файловой системе? –

+0

@LaurentMeyer Если я использую кеш OkHttp и сохраняю временный файл для воспроизведения видео, я делаю то же самое дважды, так как ответ уже сохранен в DiskLruCache OkHttp. Я хочу исключить двойное сохранение видеофайла на диске. Я использую второй DiskLruCache для управления несколькими файлами temp, а также для отключения кэша OkHttp для ответов на видео. Таким образом, я сохраняю видео на диске только один раз. Но я использую два кэша, один для видео и один для остальных ответов, в то время как теоретически можно использовать один кэш для всех ответов, если только OkHttp может предоставить ответ в качестве объекта File. – havaliza

ответ

1

Вы не можете, и в любом случае вы не должны этого хотеть. Проблема в том, что кэш диска OkHttp может вытеснять файлы по мере их использования. У него нет никакого механизма для привязки файла к цели, отличной от его собственной.

Вместо этого вам нужно управлять жизненным циклом этих загрузок вручную: сколько хранить, когда удалять их и т.д.

Смежные вопросы