2

オンラインコンテンツ(オーディオファイルなど)を読み込もうとしています。リモートファイルへの接続を開き(たとえば、を使用してnew URL().openStream())、リモートをオーディオプレーヤーに渡すと、ネットワークから徐々にInputStream読み取られます。オーディオプレーヤーライブラリがそれ以上のデータを要求しない場合、ネットワークから何も読み取らず、ライブラリがさらにデータを要求すると、再度読み取ります。InputStream

私の問題は、最初のファイルのロードプロセスが終了したらすぐに、次のオンラインオーディオファイルのキャッシュを開始したいということです。通常のを使用するInputStreamと、オーディオの再生が完了すると読み取りが完了します。これは、ネットワーク帯域幅が許せばより速く読み取り、次のオーディオファイルをキャッシュするため、適切ではありません。私のオーディオファイルは3MBよりも小さいので、メモリに安全にキャッシュできます。1つのファイルのみをプリフェッチするので、メモリリークの問題はありません。

InputStream同時読み取りも可能にするタイプのキャッシングはありますか?その後、スレッドを実行して、オーディオプレーヤーがデータを消費するよりも速くオーディオをキャッシュできます。

4

1 に答える 1

2

ダウンロードを実行するための 2 つ目のスレッドを作成することをお勧めします。このスレッドでできるだけ早くファイルをダウンロードし、データをメインの再生スレッドにプッシュします。

于 2009-10-09T16:51:52.787 に答える