【发布时间】:2013-12-04 10:22:04
【问题描述】:
我将以下代码放在另一个AsyncTask 中的doInBackground() 中,这个HttpPostHandler 包含另一个AsyncTask。然后handler.get() 继续加载。
有人对此有任何想法吗?
这是线程的问题吗???
代码:
@Override
protected Void doInBackground(Void... params) {
try {
champ = Utility.getCounter("test");
this.wait(3);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
在实用程序中:
public static int getCounter(String code) {
HttpPostHandler handler = new HttpPostHandler();
try {
handler.execute(counter_URL + code);
handler.get();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
String html = handler.getResultJSONString();
TagNode tagNode;
...
}
以下是HttpPostHandler AsyncTask
public class HttpPostHandler extends AsyncTask<String, Void, String> {
private String url;
private String resultJSONString=null;
private JSONObject resultJSON;
public String getResultJSONString() {
return resultJSONString;
}
public void setResultJSONString(String resultJSONString) {
this.resultJSONString = resultJSONString;
}
private static String toUTF8(InputStream is){
//InputStream is = resEntity.getContent();
InputStreamReader isr = null;
StringBuffer buffer = new StringBuffer();
try {
isr = new InputStreamReader(is, "utf-8");
Reader in = new BufferedReader(isr);
int ch;
while((ch = in.read()) != -1){
buffer.append((char)ch);
}
isr.close();
is.close();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e){
e.printStackTrace();
}
return buffer.toString();
}
@Override
protected String doInBackground(String... params) {
String result = "";
DefaultHttpClient client = new DefaultHttpClient();
try {
HttpGet get = new HttpGet(params[0]);
HttpResponse response = client.execute(get);
Log.d("danny", "response = "+response);
HttpEntity resEntity = response.getEntity();
if (resEntity != null) {
result = toUTF8(resEntity.getContent());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
client.getConnectionManager().shutdown();
}
setResultJSONString(result);
return result;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
resultJSONString = result;
}
}
【问题讨论】:
标签: android asynchronous android-asynctask