我在我的項目中有幾個Activity子類,每個都調用基於SOAP的Web服務,處理並顯示結果。 SOAP序列化,呼叫處理以及將結果解析爲各種POJO對象都封裝在MyWebService類中。該類通過AsyncTask執行實際的Web服務調用。通過多個活動重複使用Android AsnycTask的模式?
爲了能夠將結果傳回給調用的Activity子類,我想我強制所有這些活動都應該實現一個WebServiceResultProcessor接口,定義一個函數(processWebServiceResults)充當AsyncTask的回調函數,從onPostExecute 。
我還希望在Web服務調用期間顯示ProgressDialog。我的問題來了。爲了能夠顯示ProgressDialog(來自MyWebService或它的AsyncTask),我需要傳遞對調用者Activity的上下文的引用。並且爲了能夠從AsyncTask執行回調函數,我還需要傳遞相同的對象引用,但這次是作爲WebServiceResultProcessor。這對我來說似乎是一種代碼味道,兩次傳遞同一個對象,但是看不到任何方式。除了接口之外,我可以創建一個新的基類,擴展Activity類並從擴展類強制繼承,但這意味着我會使用此MyWebService類來排除ListActivity和類似內容。
有沒有更好的方法來做到這一點?
請問您WebServiceResultProcessor擴展上下文/活動? –
@HeikoRupp不,我可能會更喜歡這樣。 –