常に次のアプローチを使用して、Web サービス要求を行う多くの Android アプリを既に開発しています。
Web サービス リクエストを行う必要があるすべてのアクティビティで、 inAsyncTask
を表示し、ProgressDialog
inonPreExecute()
で Web サービスを呼び出しdoInBackground
、progressDialog を閉じて UI の結果を から更新するインナーを定義しますonPostExecute()
。
私の懸念は次のとおりです。それを行うためのより良い(より短い)方法はありますか?すべてのアクティビティですべてのコードを繰り返すことは理にかなっていますか? 私はたくさんグーグルで検索してきましたが、何も見つかりませんでした。
私の質問は: Callback インターフェイスを定義できませんでしたか? たとえば、これ:
public interface RequestCallback {
public void onSuccess(Whatever whatever);
public void onError(ErrorCode errorCode, String message);
}
AsyncRequest
... 次に、AsyncTask 定義と ProgressDialogshow()
およびdismiss()
ステートメントをラップする外部クラス (たとえば、 ) を定義します。したがって、すべてのアクティビティはそのクラスをインスタンス化し、次のパラメーターを渡すだけで済みます。
1) 実行する Web サービスのメソッド
2) Web サービスのそのメソッドのすべてのパラメーターを含むバンドル
3) RequestCallback インスタンス (UI を更新できる匿名のインライン インスタンスである可能性がありますonSuccess()
)
4)アクティビティのコンテキスト(ProgressDialog()を表示する必要があるため、構成変更の例外を防ぐ方法が必要です...)、
これはいいデザインだと思いませんか?何百行ものコードを節約できます...