2016-10-06 18 views
0

私はフロントエンドでAndroidを使用していますが、SpringのRESTクライアントライブラリを使用してHTTPリクエストをREST Webサービスに送信しています。私は人々がAsyncTaskを使用してRestTemplatedoInBackgroundの方法でAsyncTaskの例を読むのですが、RestTemplateがアクティビティやフラグメントであってもRestTemplateの外で使用されている例も読んでいます。 1つの方法を他の方法よりも使用することには何らかのポイントがありますか?Spring RESTサービスからAndroidで応答を受信

第2に、受信したデータに基づいて、RestTemplateのexchangeまたはgetForAllObjectを介してサーバーからの応答を受信すると、クライアントはさまざまな処理を行う必要があります。たとえば、ユーザーを検索する場合は、Userオブジェクトを受け取る必要があります。その後、クライアントはユーザーのフラグメント/アクティビティを更新する必要があります。ただし、ログインするには別のデータを受け取る必要があり、クライアントは別の後続のタスクを実行する必要があります。

HTTPリクエストを送信して応答を受信するたびにAsyncTaskを作成すると、後続のタスクをクライアント側で実行する必要があるかどうかをどのように区別できますか?列挙型を使用するのが好ましい方法ですか?たとえば、サーバーからデータを取得する場合は、AsyncTaskをインスタンス化し、executeパラメータとしてenumを渡して、送信するHTTPリクエストと受信したデータの処理を指定するenumを渡すことができます。次に、enumに基づいて異なる関数を呼び出すswitch文を使用できますか?

これが意味をなさない場合は、サーバーからの応答を処理するためのより標準的な方法がありますか?

答えて

0

docs

からAsyncTaskは、UIスレッドの適切かつ容易に使用できるようになります。このクラスを使用すると、スレッドやハンドラを操作することなく、バックグラウンド操作を実行してUIスレッドに結果を公開することができます。

AsyncTaskは、バックグラウンドでタスクを実行し、メインUIスレッドとやり取りする便利な方法を提供します。 AsyncTasksを使用しなかった場合は、メインスレッドと同期してUIを更新する独自のメソッドを実装する必要があります。任意のバックエンドサービスを呼び出している場合や、長時間実行している操作を行っている場合は、非同期タスクを実行することは常に有効です。

列挙型に基づいて異なるオブジェクトを返すのは、同じRESTエンドポイントを持つことは悪いことです。 2つの別個のエンドポイントを持つ。ユーザーを検索するための1つのGET呼び出しと、ログインユーザーへの1つのPOST呼び出し。クライアント側では、上記のエンドポイントを消費する際に別々の実装もあります。必要に応じて適切に使用してください。

+0

これはどのように動作するのかまだ分かりません。 GETリクエストとPOSTリクエストを送信する関数を送信する関数を持っていれば、AsyncTaskを拡張してバックグラウンドで実行してリクエストを送信し、レスポンスを受け取るクラスをインスタンス化することはできません。したがって、 'onPostExecution'の呼び出し中に、AsyncTaskは最初のHTTP要求がPOSTかGET要求かどうかを知らずに、そこからどこへ行くべきかを知っていますか?代わりに、送信したいすべてのタイプのHTTPリクエストに対してAsyncTaskを拡張する必要がありますか(ログインするには1つ、xデータを取得するには1つ、yデータを取得するには1つ) – Biiiiiird

+0

2つの別々の非同期タスクが必要です。 UserSearchAsyncTaskとUserLoginAsyncTaskの例として。どちらのクラスもAsyncTaskを継承します。その後、各クラスは必要に応じて。通常、これらの2つのシナリオを処理するために、個別のアクティビティまたはフラグメントがあります。 –

関連する問題