私はフロントエンドでAndroidを使用していますが、SpringのRESTクライアントライブラリを使用してHTTPリクエストをREST Webサービスに送信しています。私は人々がAsyncTask
を使用してRestTemplate
のdoInBackground
の方法でAsyncTask
の例を読むのですが、RestTemplate
がアクティビティやフラグメントであってもRestTemplate
の外で使用されている例も読んでいます。 1つの方法を他の方法よりも使用することには何らかのポイントがありますか?Spring RESTサービスからAndroidで応答を受信
第2に、受信したデータに基づいて、RestTemplateのexchange
またはgetForAllObject
を介してサーバーからの応答を受信すると、クライアントはさまざまな処理を行う必要があります。たとえば、ユーザーを検索する場合は、User
オブジェクトを受け取る必要があります。その後、クライアントはユーザーのフラグメント/アクティビティを更新する必要があります。ただし、ログインするには別のデータを受け取る必要があり、クライアントは別の後続のタスクを実行する必要があります。
HTTPリクエストを送信して応答を受信するたびにAsyncTaskを作成すると、後続のタスクをクライアント側で実行する必要があるかどうかをどのように区別できますか?列挙型を使用するのが好ましい方法ですか?たとえば、サーバーからデータを取得する場合は、AsyncTaskをインスタンス化し、execute
パラメータとしてenumを渡して、送信するHTTPリクエストと受信したデータの処理を指定するenumを渡すことができます。次に、enumに基づいて異なる関数を呼び出すswitch文を使用できますか?
これが意味をなさない場合は、サーバーからの応答を処理するためのより標準的な方法がありますか?
これはどのように動作するのかまだ分かりません。 GETリクエストとPOSTリクエストを送信する関数を送信する関数を持っていれば、AsyncTaskを拡張してバックグラウンドで実行してリクエストを送信し、レスポンスを受け取るクラスをインスタンス化することはできません。したがって、 'onPostExecution'の呼び出し中に、AsyncTaskは最初のHTTP要求がPOSTかGET要求かどうかを知らずに、そこからどこへ行くべきかを知っていますか?代わりに、送信したいすべてのタイプのHTTPリクエストに対してAsyncTaskを拡張する必要がありますか(ログインするには1つ、xデータを取得するには1つ、yデータを取得するには1つ) – Biiiiiird
2つの別々の非同期タスクが必要です。 UserSearchAsyncTaskとUserLoginAsyncTaskの例として。どちらのクラスもAsyncTaskを継承します。その後、各クラスは必要に応じて。通常、これらの2つのシナリオを処理するために、個別のアクティビティまたはフラグメントがあります。 –