0

長時間実行されている http 要求 (少なくとも 100 MB のデータであるファイルのアップロードの例) をキャンセルできる、より完全なライブラリを探しています。

キャンセル API を提供する Volley を見たことがありますが、コールバックを呼び出さず、実際に実行を停止しないように処理しているようです (これについては間違っている可能性があります)。

また、キャンセルできる将来のタスクを返すため、キャンセルを処理できると思われる ION https://github.com/koush/ionを見てきましたが、これが正しい選択であるかどうかはよくわかりません私の場合。リクエストを並行して実行するのではなく、順番に実行する必要があります。

私はまた、そのようなライブラリを自分で作成しました(https://github.com/darko1002001/android-rest-client)。これは長い間使用しており、うまく機能しています。私が持っていたいくつかのケースのリクエストと進行状況の更新のキャンセルですが、正直なところ、この要件に対して十分にクリーンまたは堅牢であるとは本当に感じていません.

私は通常、リクエストの実行にスレッドプールを使用しますが、長時間実行されるリクエストを単一のスレッドプールキューに移動して、他の短いリクエストがブロックされることなく実行されますが、長時間の操作は行われます。長時間実行されるリクエストを順次実行するために、自分でリクエストの実行を管理する必要がある場合は、回避策の方が良いと思います。

誰かがそのような機能を構築した経験を共有できますか? 何を使用するかについての提案/推奨事項はありますか?

4

2 に答える 2

1

ダウンロードの場合は、 Android Download Managerの使用を検討してください。使い方は簡単で、ユーザーはいつでもキャンセルできます。

アップロードの場合Wakefull Serviceを使用して自分でアップロードできます。HTTP アップロードはそれほど複雑ではないので、これを使用します。Android のバージョンに応じて、Apache HTTP ライブラリ (2.3.3 より前) または HTTPUrlconnection (すべて新しいもの) を使用します。ボレー コードはオープン ソースであり、アップロード ロジック (またはその一部) を借用できることにも注意してください:)

于 2014-03-25T09:31:20.793 に答える
0

私はAsyncHttpClientを使用しています

それはキャンセル方法をサポートしています、あなたはドキュメントで詳細を見つけることができます

于 2014-03-25T09:37:54.410 に答える