2015-06-02 3 views
0

Я занимаюсь различными учебными пособиями и примерами Asynctask, но я все еще немного смущен. Если я хочу выпустить 3 веб-запросы и возвращать их ответ как:Проверка на работоспособность AsyncTask

// Пример

String[] response = new String[3]; 

response[0] = webrequest("http://www.google.com"); //simple HTTP GET request 
response[1] = webrequest("http://www.bing.com"); //simple HTTP GET request 
response[2] = webrequest("http://www.aj.com"); //simple HTTP GET request 

//sample results from request 
response[0] = "blah"; 
response[1] = "arg"; 
response[2] = "meh"; 

Чтобы сделать это с AsyncTask, мне нужно реализовать 3 разных ATs? Должен ли я использовать что-то еще?

String[] response = new String[3]; 
webCreate sample = new webCreate(); 
try{ 
response[0] = sample.execute("http://www.google.com").get().toString(); 
response[1] = sample.execute("http://www.google.com").get().toString(); 
response[2] = sample.execute("http://www.google.com").get().toString(); 
} 
catch (Exception sampleMsg) 
{} 

public class webCreate extends AsyncTask<String, String, String> { 

} 



    protected String doInBackground(String... params) { 
      // String url=params[0]; 
       String webRequestResponse = null; //the 
      // web request 

        BufferedReader in = new BufferedReader(
        new InputStreamReader(con.getInputStream())); 
      String inputLine; 
      StringBuffer response = new StringBuffer(); 


      while ((inputLine = in.readLine()) != null) { 
       response.append(inputLine); 
      } 

      return reponse; 
    } 

Я знаю, что я мог бы получить доступ к данным отклика с помощью .get(), но тогда мой «Асинхронный» станет «синхронизации» лол. Я чувствую, что должен использовать что-то другое, кроме AsyncTask, но я понятия не имею, что это. Пожалуйста помоги.

+0

Не используйте AsyncTasks. Посмотрите на Volley/Retrofit/Loaders/RxJava. –

+0

AsyncTasks были неудачной попыткой в ​​запущенных API, чтобы оптимизировать использование потоков. Со временем было замечено, что они плохо складываются, это аддон обратного вызова, а также контекст утечки. Избегайте тогда, где это возможно. –

ответ

0

Ваш подход в порядке, от doInBackground вашего AsyncTask вызывает функцию, которая инициирует веб-запросы и ждет результата с . get(). В связи с тем, что запрос затем не работает на mainUi и блокирует его, я не вижу проблемы при этом.

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

  • Нет связанных вопросов^_^