0

私は LiveSDK を使用しており、ダウンロードのキャンセルに関連するいくつかのものをデバッグしていて、奇妙な動作に遭遇しました: InputStrem.close() が呼び出されると、ダウンロードされたファイルサイズに比例して非常に時間がかかります。インターネットからファイルをダウンロードするときに InputStream を閉じるとすぐに閉じるように書いたので、これは私にとって本当に奇妙です。なぜこれが起こるのか誰にも分かりますか?

誰かが問題を理解するのに役立つかもしれないこのリンクに出くわしましたが、できませんでした。

4

1 に答える 1

0

問題は、使用されたストリームが ContentLengthInputStream であり、ドキュメントに次のように記載されていることでした:

「このクラスは、close が呼び出された場合でも、基になるストリームを決して閉じないことに注意してください。代わりに、クローズ時の制限の「終了」まで読み取ります。これにより、クライアントを必要とせずに、後続の HTTP 1.1 要求のシームレスな実行が可能になります。応答の内容全体を読むことを忘れないでください。」

このクラスが実際にどのように機能するかを理解するのに役立つドキュメントや何かは見つかりませんでしたが、このクラスの close メソッドが実際にクラスを閉じないことは直感的ではありません。ダウンロードを強制的に停止するには、HttpApiRequest.abort()を呼び出す必要があり、InputStream は自動的に閉じます。

于 2013-09-03T13:22:06.273 に答える