2011-10-07 4 views
0

Я нахожусь в случае, который можно увидеть ниже, что я не смог найти решение.Как использовать AsyncTask как callbackfunction

Я собираюсь принять значение результата из веб-метода и установить его в параметр, после чего после некоторой операции с ним я отправлю его другому веб-методу, и он будет использоваться другим методом и т. Д. Вот что я хочу сделать :

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

Я использую AsyncTask при вызове WebMethods, потому что соты не поддерживает для вызова веб-сервисы на UI потоке. Я получаю значение результата 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

Что вы подразумеваете под термином "can not send to caller method back."? – Caner

+0

То, что я хочу сделать, очень просто. Я буду асинхронно вызывать веб-метод, и после получения результата я снова вызову еще один веб-метод асинхронно. и это продолжается. Проблема в том, что да, я могу получить результат из webmethod, но я не могу установить значение результата для параметра в блоке потока пользовательского интерфейса. Основные коды запускаются в пользовательском интерфейсе, и только потоки веб-меток выполняются по фоновым потокам. Мне нужно поймать значение результата и передать его параметру, который определяется в блоке пользовательского интерфейса. –

+0

Хорошо, как сказал керубу, проверьте класс 'Handler' – Caner

ответ

0

Если Вы желаете отправить сообщения/данные/Связки между потоками взглянуть на Message и Handler классов.

Тема вашего рабочего потока создаст сообщение, которое будет содержать результат, который будет отправлен в ваш поток пользовательского интерфейса.

При создании обработчика обязательно создайте его в потоке пользовательского интерфейса.

Смежные вопросы