0

私は、サーバーからデータを取得してマップビューに表示するためにhttpリクエストを発行しているAndroidアプリを持っています。ユーザーがパンするたびにリクエストを発行します。ユーザーが 7 回パンしたとします (7 つのリクエストが入ったことを意味します)。最初の 6 つのリクエストからのレスポンスをキャンセル/破棄し、7 番目のレスポンスをマップビューに表示する必要があります。

リクエストのキューを維持し、それをサービス 1 に 1 つずつ投稿するという漠然とした考えがあります。リクエストがまだ投稿されていない場合に新しいリクエストが入った場合は、それをキャンセルします。リクエストがすでに投稿されていて、新しいリクエストが届いた場合は、そのレスポンスを破棄します。

それを処理するための最良のアプローチは何でしょうか。任意のポインター。

4

2 に答える 2

2

問題は、ユーザーがパン操作の準備が整ったと判断するのはいつですか?

ある種のキューを作成する場合は、ユーザーがパンの準備ができていると判断するタイミングを知る必要があります。

たとえば 7 のように何度かパンした後、2 秒待ちますか? そして、「OK、ユーザーはパンニングを完了しました。最後のリクエストを処理しましょう」と決めますか? 1つのリクエストのみを行うことを意味します。

それとも、実際に 7 つのリクエストを行い、最後のレスポンスのみを使用しますか?

7 つのリクエストを実行する場合、すべてのレスポンスを同じ変数に保存して、常に最後のレスポンスを効果的に使用してみませんか。

可能性 1 (多くの要求と多くの地図描画):

  • ユーザーパン
  • 地図情報のリクエストを送信
  • 応答を保存
  • 地図を描く
  • 上記の手順を繰り返します

可能性 2 (リクエストが多く、地図の描画が少ない):

  • ユーザーパン
  • 地図情報のリクエストを送信
  • 応答を保存
  • ユーザーがパンを終了したかどうかタイマーを確認しますか? はい: 続行、いいえ: 上記を繰り返します
  • 地図を描く

可能性 3 (要求が少ない、地図の描画が少ない):

  • ユーザーパン
  • リクエストを保存
  • ユーザーがパンを終了したかどうかタイマーを確認しますか? はい: 続行、いいえ: 上記を繰り返します
  • 地図情報のリクエストを送信
  • 応答を保存
  • 地図を描く
于 2013-02-20T14:32:06.783 に答える
0

シングルトン デザイン パターンを使用できます。適切に実装されていれば、1 つのスレッド/AsyncTask のみがその状態を変更できるようになります。そうすれば、処理した最後の応答からのデータのみを確実に保持できます。

于 2013-02-20T14:27:12.507 に答える