オンラインコンテンツ(オーディオファイルなど)を読み込もうとしています。リモートファイルへの接続を開き(たとえば、を使用してnew URL().openStream()
)、リモートをオーディオプレーヤーに渡すと、ネットワークから徐々にInputStream
読み取られます。オーディオプレーヤーライブラリがそれ以上のデータを要求しない場合、ネットワークから何も読み取らず、ライブラリがさらにデータを要求すると、再度読み取ります。InputStream
私の問題は、最初のファイルのロードプロセスが終了したらすぐに、次のオンラインオーディオファイルのキャッシュを開始したいということです。通常のを使用するInputStream
と、オーディオの再生が完了すると読み取りが完了します。これは、ネットワーク帯域幅が許せばより速く読み取り、次のオーディオファイルをキャッシュするため、適切ではありません。私のオーディオファイルは3MBよりも小さいので、メモリに安全にキャッシュできます。1つのファイルのみをプリフェッチするので、メモリリークの問題はありません。
InputStream
同時読み取りも可能にするタイプのキャッシングはありますか?その後、スレッドを実行して、オーディオプレーヤーがデータを消費するよりも速くオーディオをキャッシュできます。