asyncTask를 사용하여 http 요청을 작성했으며 따라서 진행률 표시 줄을 사용하여 해당 스레드의 진행 상황을 나타냅니다. 모든 것은 잘 작동하는데, onPostexecute()
메서드가 호출 될 때 Logcat
에 응답 문자열이 표시되었지만 진행률 표시 줄이 종료되지 않습니다.진행률 막대가 종료되지 않는 이유는 무엇입니까?
비슷한 질문이 있지만 문제의 해결 방법을 찾지 못했습니다. 도와주세요. 당신은 당신이 생각하는 (또는 원하는) 당신이 할 ProgressDialog
인스턴스에서 dismiss()
를 호출하지 않는
class RequestTask extends AsyncTask<String, Integer, String> {
@SuppressWarnings("static-access")
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
prgDialog=new ProgressDialog(getActivity());
prgDialog.setCancelable(true);
prgDialog.show(getActivity(), null, "Loading...");
}
@Override
protected String doInBackground(String... uri) {
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response;
String responseString = null;
try {
response = httpclient.execute(new HttpGet(uri[0]));
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
response.getEntity().writeTo(out);
out.close();
responseString = out.toString();
} else {
// Closes the connection.
response.getEntity().getContent().close();
throw new IOException(statusLine.getReasonPhrase());
}
} catch (ClientProtocolException e) {
// TODO Handle problems..
} catch (IOException e) {
// TODO Handle problems..
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Log.d("result", result);
prgDialog.dismiss();
// Do anything with response..
}
}
'super.onPostExecute()'앞에'prgDialog.dismiss();'를 넣으려고 했습니까? –
예, 했어요. 그러나 그것은 효과가 없었습니다. – Harsha
onPostExecute() 메서드가 호출되고 있습니까? – joao2fast4u