私は、サーバーとの間でhttpメッセージを送受信する必要があるAndroidプロジェクト(APIレベル10)に取り組んでいます。Androidの汎用ネットワークマネージャー
NetworkManagerという名前のクラスが実装されています。このメソッドは、httpリクエストごとに1つずつ(LoginRequest(user pass)、RegistrationRequest(user .....))異なるメソッドを提供します。
これらのメソッドはすべて、実際に接続を確立し、応答(jsonオブジェクト)を送受信するメソッドであるsendMessageというメソッドに渡されるJSONオブジェクトを生成します。
もちろん、ネットワークコールには時間がかかるので、ネットワーク操作の実行中にAsyncTaskを使用してprogressDialogを表示することにしました。
問題は、メインスレッドが実行した結果を含む他の操作を実行する前に、バックグラウンドスレッドから応答値を取得する必要があることです。 同時に、私はAsyncTaskの共通の再利用可能な実装を作りたいと思います。
例:2つのEditText(ユーザー名、パスワード)と[ログイン]ボタンを示すログインアクティビティがあります。ログインボタンを押すと、progressDialogが現れなければならず、doInBackgroundタスクが完了すると、それを破棄する必要があります。もちろん、私はこの方法を行うことができます:
onClick(View v) //called when the login button is pressed
{
onPreExecute()
{
//Show the progress dialog
}
doInBackground()
{
//Retreive the login response (an integer containing a message code) using sendLoginRequest(username, password);
//return the response
}
onPostExecute(int response)
{
//Dispose the progress dialog, then loginSucessfull ? start new activity : show error toast
}
}
しかし、私はNの要求を持っている場合、私は作成する必要があるので、私は私は避けたいものですどの送信する必要があるすべての要求に対して非同期タスクを実装する必要があり、このようにやってAsyncTaskを拡張するN個のクラス。
ありがとうございました!
おかげで、非常に明確に!少し修正して私のプロジェクトにあなたのコードを再利用することができました;-) – MastErAldo
答えの左側にある緑色の右の記号をクリックすると答えが受け入れられます。このようにして、あなたは答えを感謝し、正しい方向に他の指導者を助けます。この方法でこのコミュニティが機能します。 :) – Javanator