2011-10-07 102 views
0

我在一個案例,可以看到下面,我找不到任何解決方案。如何使用AsyncTask像回調函數

我打算從webmethod中取結果值並將其設置爲一個參數,然後在對它進行一些操作之後,我會將它發送給另一個webmethod,並且會被另一個方法等使用。以下是我想要做的:

x = webMethodA(); 
y = webMethodB(x+3); 
if(y){ 
z=10; 
} else { 
z=1000; 
t = webMethodC(z); 

我在調用webmethods時使用AsyncTask,因爲蜂窩不支持在UI線程上調用webservices。我正在通過onPostExecute創建結果值,但無法發送給調用方法。

我該如何解決這個問題?

setMethodName("GetTarih"); 
     KeyValuePair[] parameters = new KeyValuePair[2]; 
     parameters[0] = new KeyValuePair("Rep", "TEST001"); 
     parameters[1] = new KeyValuePair("Tarih", String.valueOf(Util.getOADateByToday())); 
     CallSoap soap = new CallSoap(uri, soapAction, parameters); 
     soap.setDataDownloadListener(new CallSoap.DataDownloadListener() { 
      public void dataDownloadedSuccessfully(String data) { 
       Log.e("aaaa",data); 
       tarih = data; 

      } 
      public void dataDownloadFailed() { 
       // TODO Auto-generated method stub 

      } 
     }); 

     soap.execute(""); 

     //I want to continue from this line with parameter named tarih. 
+0

你是什麼意思的「不能發送到調用方法回來」? – Caner

+0

我想要做的事情非常簡單。我打算異步調用webmethod,並在得到結果後再次異步調用另一個webmethod。這繼續下去。問題是,是的,我可以從webmethod得到結果,但我無法將結果值設置爲UI線程塊中的參數。主代碼在UI上運行,只有webmethod調用在後臺線程上運行。我需要捕獲結果值並將其傳遞給在UI塊中定義的參數。 –

+0

好的,正如kerubu所說的,檢查'Handler'類 – Caner

回答

0

如果你想在線程之間發送消息/數據/捆綁看看MessageHandler類。

您的'工作者'線程將創建一條消息來包含將被髮送到您的UI線程的結果。

當您創建您的處理程序時,請確保您在UI線程中創建它。