Как я могу использовать AsyncTask как функцию обратного вызова - PullRequest
0 голосов
/ 07 октября 2011

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

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

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

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

1 Ответ

0 голосов
/ 07 октября 2011

Если вы хотите отправлять сообщения / данные / связки между потоками, взгляните на Сообщение и Обработчик классы.

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

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

...