2012-03-21 3 views
1

У меня есть активность, которая должна выполнять два вызова удаленного сервера. Первое простое и происходит, когда страница загружается, и я просто звоню, чтобы получить некоторые данные и показать их ... нет проблем.Android - Как сделать два асинхронных вызова в одном действии?

Проблема возникает во втором вызове, потому что, как только я вызываю sendFeedback, он пытается выполнить задачу, но метод doInBackground() был написан для исходного вызова, и, следовательно, параметры не будут работать, а также функция который вызывается, когда данные возвращаются из удаленного вызова, не будет одинаковым для обоих вызовов.

Что обычно делается в ситуации, в которой я столкнулся, где мне нужно сделать два разных удаленных вызова из одной активности?

Спасибо!

+2

Почему вы не можете создать совершенно новый класс задач Async? – dymmeh

+0

Они оба работают одновременно? – sdfwer

ответ

3

Как предлагает dymmeh, просто используйте два разных подкласса AsyncTask.

+0

@kabko спасибо, но как мне сделать два подкласса AsyncTask? Я имею в виду, как я могу назвать один класс при необходимости, а не другой? :) Благодаря! – GeekedOut

+0

Я не знаю, где такое замешательство. Как вы создали один подкласс AsyncTask? Просто сделайте что-то подобное для второго. Возможно, это раскроет все для нас, если вы разместите небольшой код или псевдокод того, что у вас есть, чтобы сделать вещи более конкретными. – kabuko

+0

@kabko, что я не понимаю, есть ли у меня два объявления этого: public class DownloadWebPageTask extends AsyncTask GeekedOut

2

Я не мог полностью выполнить то, что вы хотите, но я думаю, вы говорите, что хотите сделать два асинхронных вызова последовательно со вторым в зависимости от первого.

Если мое понимание верное, запустите второй AsyncTask из метода onPostExecute() первого.

2

Просто создайте 2 AsyncTask, где они вам понадобятся.

new AsyncTask<String, Void, Object>() { 
     @Override 
     protected Object doInBackground(String... params) { 
        // put task here 

     } 

     @Override 
     protected void onPostExecute(Object result) { 
      super.onPostExecute(result); 

     } 
    };