2015-09-27 26 views
0

我在我的應用程序中使用OkHttp下載視頻。要播放視頻,我需要完全下載,然後使用File對象播放。如何從OkHttp的Response body中獲取File對象?

我找不到從OkHttp中的底層DiskLruCache獲取File對象的好方法。現在我使用響應主體的InputStream在另一個DiskLruCache中傳遞響應,以便接收File對象並播放它。

我認爲擁有多個DiskLruCaches並不是一個好主意。在OkHttp中有沒有什麼好辦法從緩存的響應中獲取File對象?

+0

爲什麼緩存它,你能不能保存在文件系統上? –

+0

@LaurentMeyer如果我使用OkHttp緩存並保存一個臨時文件來播放視頻,我會做同樣的事情兩次,因爲響應已經保存在OkHttp的DiskLruCache中。我想消除磁盤上的視頻文件的雙重保存。我使用第二個DiskLruCache來管理多個臨時文件,並且爲視頻響應禁用OkHttp的緩存。這樣我只將視頻保存在磁盤上一次。但是我使用兩個緩存,一個用於視頻,一個用於其他響應,而理論上可以爲所有響應使用單個緩存,只要OkHttp可以提供響應作爲File對象。 – havaliza

回答

1

你不能,而你不應該想要。問題是OkHttp的磁盤緩存可能會在您使用它們時逐出文件。它沒有任何機制將文件固定爲除自己以外的其他用途。

相反,你需要手動管理這些下載的生命週期:有多少存儲,當刪除它們,等

相關問題