私のプロジェクトには、SOAPベースのWebサービスを呼び出し、結果を処理して表示する、いくつかのアクティビティサブクラスがあります。 SOAPシリアル化、コール処理、およびさまざまなPOJOオブジェクトへの結果の解析は、MyWebServiceクラスにカプセル化されています。このクラスは、AsyncTaskを介して実際のWebサービス呼び出しを実行します。いくつかのアクティビティでAndroid AsnycTaskを再利用するためのパターン?
呼び出し元のアクティビティサブクラスに結果を返すことができるように、これらのすべてのアクティビティで、OnPostExecuteからコールされたAsyncTaskのコールバックとして機能する単一の関数(processWebServiceResults)を定義するWebServiceResultProcessorインターフェイスを実装する必要があると考えました。 。
また、Webサービスコール中にProgressDialogを表示する必要があります。そしてここに私の質問が来る。 ProgressDialog(MyWebServiceまたはAsyncTaskのいずれかから)を表示できるようにするには、呼び出し元アクティビティのコンテキストへの参照を渡す必要があります。また、AsyncTaskからコールバック関数を実行できるようにするため、私はも同じオブジェクト参照を渡す必要がありますが、今回はWebServiceResultProcessorとして渡します。これは私には同じオブジェクトを2回渡すコードの臭いのようですが、その周りには何も見えません。インターフェイスの代わりに、新しい基本クラスを作成して、Activityクラスを拡張し、拡張クラスから継承を適用することもできますが、ListActivityなどをこのMyWebServiceクラスの使用から除外します。
これを行うより良い方法はありますか?
あなたWebServiceResultProcessorは、コンテキスト/動作を拡張していますか? –
@HeikoRuppいいえ、私はおそらくそれをそのままにしたいと思うでしょう。 –