-1

下面是我的代码,它在 backgroundtask 中有一个 url 并在我的 senario 中获取 postexecute 字符串我有两个 http 连接我该怎么办?url1 和 url2 如何在后台并行工作?

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);
    }
}
}

但现在我又多了一个 http 连接并开始执行 postexecute 并行?像 protected void onPostExecute(String result,String result2)

            String url2 = "http://198.57.208.46/abc";
            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);
4

1 回答 1

0

创建一个构造函数并通过构造函数将参数传递给方法,例如

public class TheTask extends AsyncTask<Void, String, String> {
   String url;
   public TheTask(String url) {
        this.url = url;
   }
@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"; // now remove it, as url is declared at class level
        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);
}

} }

现在你可以调用这个异步任务

new TheTask("your_url").execute(); // call this method multiple times if you want to execute tasks in parallel.
于 2019-06-10T05:25:16.860 回答