我即将加载在线内容(比如音频文件)。如果我只是打开与远程文件的连接(例如,使用new URL().openStream()
)并将远程InputStream
传递给音频播放器,则会逐渐读取 < / strong>来自网络。如果音频播放器库没有要求InputStream
获取更多数据,则它不会从网络中读取任何内容,然后当库声明更多时,它会再次读取。
我的问题是,我想在第一个加载过程完成后立即开始缓存下一个在线音频文件。使用正常的InputStream
,在完成音频播放时读取完成,这是不好的,因为如果网络带宽允许,我希望它读得更快,以便缓存下一个音频文件。我的音频文件小于3mb,因此可以安全地缓存到内存中。我只预取一个文件,所以没有内存泄漏问题。
是否有任何类型的缓存InputStream
,它还允许并发读取?然后我可以运行一个线程并比音频播放器消耗数据更快地缓存音频。
答案 0 :(得分:2)
我建议您创建第二个线程来执行下载。在此线程中尽快下载文件并将数据推送到主播放线程。