2013-10-05 18 views
0

如何在asynctask背景中調用兩個不同的網絡url並分別調用onPostExecute?任何想法請幫助我。以下是我的代碼,適用於一個網絡連接。在我的應用程序中有兩個不同的網絡連接。如何在asynctask中調用兩個不同的http連接

public class TheTask extends AsyncTask<Void, String, String> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 

    @Override 
    protected String doInBackground(Void... arg0) { 
     try { 
      String query = URLEncoder.encode("American%20Cheese%20Burger", "utf-8"); 
      String url = "http://198.57.208.46.xyz"; 
      Log.i("url",""+url); 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet request = new HttpGet(url); 
      HttpResponse response = client.execute(request); 
      HttpEntity resEntity = response.getEntity(); 
      _response=EntityUtils.toString(resEntity); 
     } catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return _response; 
    } 


    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     tv.setText(result); 
    } 
} 
+0

我有兩個不同的URL我如何在postexecute從背景接受? – user2844177

回答

0

除了Java方式(Threadpools)之外,還有兩種可能性的Android方式。

  • 調用doInBackground()有兩個參數(實際上你喜歡)。這將在末尾調用onPostExecute()

  • 此外覆蓋AsyncTask.onPostProgress()並在每個網址與publishProgress(_response);調用它。這將在每個網址和UI線程中被調用,所以它應該滿足您的要求。代碼如下所示:

    public class TheTask extends AsyncTask<String, String, String> { 
        @Override 
        protected String doInBackground(String... urls) { 
         for(String url : urls) { 
          Log.i("url", url); 
          // Work with the URL, like reading the JSON and build _response 
          publishProgress(_response); 
         } 
         return _response; 
        } 
    
        @Override 
        protected void onProgressUpdate(String _response) { 
         super.onProgressUpdate(_response); 
         tv.setText(_response); 
        } 
    } 
    
  • 如果這仍然不完全,你需要什麼,還有你可以做第三件事:建兩個AsyncTasks和並行運行它們。

+0

沒有accorting我的需要兩個網址有不同的JSON數據,我想使用該數據,所以我如何得到postexecute兩個不同的URL響應? – user2844177

+0

這就是我寫的。而不是'onPostExecute',你需要使用'onPostProgress'。這可以通過'publishProgress'調用'doInBackground'中的for循環。 – jboi

+0

舉例 – user2844177

相關問題