2011-10-07 4 views
0

解決策が見つからない場合があります。AsyncTaskをコールバック関数のように使うにはどうすればいいですか?

私はwebmethodから結果の値を取得し、それをパラメータに設定します。次に、それを使って別のWebメソッドに送信し、別のメソッドなどで使用します。ここで私がしたいことがあります。 :ハニカムは、UIスレッド上でWebサービスを呼び出すためにサポートされていないためのwebMethodsを呼び出している間、私はAsyncTaskを使用しています

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

。私は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

私がしたいことはとても簡単です。私は非同期にWebメソッドを呼び出すつもりですし、結果を取得した後、もう一度別のWebメソッドを非同期に呼び出します。これは続く。問題は、はい私はwebmethodから結果を得ることができますが、私はUIのスレッドブロックのパラメータに結果の値を設定することはできませんです。メインコードはUI上で実行され、バックグラウンドスレッド上ではwebmethod呼び出しのみが実行されます。私は結果の値をキャッチし、それをUIブロックで定義するパラメータに渡す必要があります。 –

+0

ケルブが言ったように、 'Handler'クラス – Caner

答えて

0

あなたは、スレッド間でのメッセージ/データ/バンドルを送信したいしている場合は、MessageHandlerクラスを見てみましょう。

あなたの「ワーカー」スレッドは、あなたのUIスレッドに送信される結果を含むメッセージを作成します。

ハンドラを作成するときは、必ずUIスレッドでハンドラを作成してください。

関連する問題